Nginx安裝完畢后,會發(fā)生相應的安裝目次,按照前面的安裝路徑,Nginx的設置文件路徑為/opt/nginx/conf,個中nginx.conf為Nginx的主設置文件。這里重點先容下nginx.conf這個設置文件。
Nginx設置文件主要分成四部門:main(全局配置)、server(主機配置)、upstream(負載平衡處事器配置)和
location(URL匹配特定位置的配置)。main部門配置的指令將影響其他所有配置;server部門的指令主要用于指定主機和端口;upstream指令主要用于負載平衡,配置一系列的后端處事器;location部門用于匹配網(wǎng)頁位置。這四者之間的干系式:server擔任main,location擔任server,upstream既不會擔任其他配置也不會被擔任。
在這四個部門傍邊,每個部門都包括若干指令,這些指令主要包括Nginx的主模塊指令、事件模塊指令、HTTP焦點模塊指令,同時每個部門還可以利用其他HTTP模塊指令,譬喻Http
SSL模塊、HttpGzip Static模塊和Http Addition模塊等。
下面通過一個Nginx設置實例,具體先容下nginx.conf每個指令的寄義。為了能更清楚地相識Nginx的布局和每個設置選項的寄義,這里憑據(jù)成果點將Nginx設置文件分為7個部門逐次講授,域名注冊,下面就環(huán)繞這7個部門舉辦先容。
1.Nginx的全局設置
下面這段內(nèi)容是對Nginx的全局屬性設置,
user nobody nobody;
worker_processes 4;
error_log logs/error.log notice;
pid
logs/nginx.pid;
worker_rlimit_nofile 65535;
events{
use epoll;
worker_connections
65536;
}
對上面這段代碼中每個設置選項的寄義表明如下:
user是個主模塊指令,指定Nginx Worker歷程運行用戶以及用戶組,默認由nobody賬號運行。
worker_processes是個主模塊指令,指定了Nginx要開啟的歷程數(shù)。每個Nginx歷程平均淹滅10M~12M內(nèi)存。按照履歷,一般指定一個歷程足夠了,假如是多核CPU,發(fā)起指定和CPU的數(shù)量一樣的歷程數(shù)即可。
error_log是個主模塊指令,用來界說全局錯誤日志文件。日志輸出級別有debug、info、notice、warn、error、crit可供選擇,個中,debug輸出日志最為最具體,而crit輸出日志最少。
pid是個主模塊指令,用來指定歷程id的存儲文件位置。
worker_rlimit_nofile用于指定一個nginx歷程可以打開的最多文件描寫符數(shù)目,這里是65535,需要利用呼吁“ulimit
-n 65535”來配置。
events指令是設定Nginx的事情模式及毗連數(shù)上限。
events{
use epoll;
worker_connections 65536;
}
use是個事件模塊指令,用來指定Nginx的事情模式。Nginx支持的事情模式有select、poll、kqueue、epoll、rtsig和/dev/poll。個中select和poll都是尺度的事情模式,kqueue和epoll是高效的事情模式,差異的是epoll用在Linux平臺上,而kqueue用在BSD系統(tǒng)中。對付Linux系統(tǒng),epoll事情模式是首選。
worker_connections也是個事件模塊指令,用于界說Nginx每個歷程的最大毗連數(shù),默認是1024.最大客戶端毗連數(shù)由worker_processes和worker_connections抉擇,即Max_client=worker_processes*worker_connections,在作為反向署理時,max_clients變?yōu)椋簃ax_clients
= worker_processes * worker_connections/4。
歷程的最大毗連數(shù)受Linux系統(tǒng)歷程的最大打開文件數(shù)限制,在執(zhí)行操縱系統(tǒng)呼吁“ulimit -n
65536”后worker_connections的配置才氣生效。
2.HTTP處事器設置
接下來開始舉辦HTTP處事器配置。
下面這段內(nèi)容是Nginx對HTTP處事器相關屬性的設置,
http{
include conf/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user
[$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
client_max_body_size 20m;
client_header_buffer_size 32K;
large_client_header_buffers 4 32k;
Sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
client_header_timeout 10;
client_body_timeout 10;
send_timeout
10;