Nginx 主配置文件 /etc/nginx/nginx.conf 是一個(gè)純文本類型的文件,整個(gè)配置文件是以區(qū)塊的形式組織,通常每一個(gè)區(qū)塊以一對(duì)大括號(hào){}來表示開始與結(jié)束。
提示:若編譯安裝則 nginx.conf 位于編譯時(shí)所指定目錄。
全局配置部分用來配置對(duì)整個(gè) server 都有效的參數(shù)。主要會(huì)設(shè)置一些影響 nginx 服務(wù)器整體運(yùn)行的配置指令,主要包括配置運(yùn)行 Nginx 服務(wù)器的用戶(組)、允許生成的 worker process 數(shù),進(jìn)程 PID 存放路徑、日志存放路徑和類型以 及配置文件的引入等。 示例:
#如下為全局Main配置:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
events 塊涉及的指令主要影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接,常用的設(shè)置包括是否開啟對(duì)多 worker process 下的網(wǎng)絡(luò)連接進(jìn)行序列化,是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接,選取哪種事件驅(qū)動(dòng)模型來處理連接請(qǐng)求,每個(gè) worker process 可以同時(shí)支持的最大連接數(shù)等。
#如下為Event配置:
events { worker_connections 1024; }
http 全局塊配置的指令包括文件引入、MIME-TYPE 定義、日志自定義、連接超時(shí)時(shí)間、單鏈接請(qǐng)求數(shù)上限等。
#如下為http配置:
http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
提示:通常 Server 配置在獨(dú)立的/etc/nginx/conf.d/*.conf中,通過引用的方式調(diào)用,如下/etc/nginx/conf.d/default.conf:
Server 塊也被叫做“虛擬主機(jī)”部分,它描述的是一組根據(jù)不同 server_name 指令邏輯分割的資源,這些虛擬服務(wù)器響應(yīng) HTTP 請(qǐng)求,因此都包含在 http 部分。最常見的配置是本虛擬機(jī)主機(jī)的監(jiān)聽配置和本虛擬主機(jī)的名稱或 IP 配置。一個(gè) server 塊可以配置多個(gè) location 塊。location 匹配規(guī)則參考
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
user nginx; #進(jìn)程用戶 worker_processes 1; #工作進(jìn)程,配合和CPU個(gè)數(shù)保持一致 error_log /var/log/nginx/error.log warn; #錯(cuò)誤日志路徑及級(jí)別 pid /var/run/nginx.pid; #Nginx服務(wù)啟動(dòng)的pid
events { worker_connections 1024; #每個(gè)worker進(jìn)程支持的最大連接數(shù) use epoll; #內(nèi)核模型,select、poll、epoll }
http { include /etc/nginx/mime.types; #指定在當(dāng)前文件中包含另一個(gè)文件的指令 default_type application/octet-stream; #指定默認(rèn)處理的文件類型可以是二進(jìn)制 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #日志格式 access_log /var/log/nginx/access.log main; #訪問日志 sendfile on; #優(yōu)化靜態(tài)資源 #tcp_nopush on; #nginx不要緩存數(shù)據(jù),而是一段一段發(fā)送 keepalive_timeout 65; #給客戶端分配連接超時(shí)時(shí)間,服務(wù)器會(huì)在這個(gè)時(shí)間過后關(guān)閉連接。 #gzip on; #壓縮
server { listen 80; #監(jiān)聽端口,默認(rèn)80 server_name localhost; #提供服務(wù)的域名或主機(jī)名 #charset koi8-r; #access_log logs/host.access.log main; location / { #控制網(wǎng)站訪問路徑 root /usr/share/nginx/html; #存放網(wǎng)站的路徑 index index.html index.htm; #默認(rèn)訪問的首頁 } #error_page 404 /404.html; #錯(cuò)誤頁面 # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; #定義請(qǐng)求錯(cuò)誤,指定錯(cuò)誤代碼 location = /50x.html { #錯(cuò)誤代碼重定向到新的location root html; } # another virtual host using mix of IP-, name-, and port-based configuration # #server { #server段配置 # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { #server段配置 # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; #SSL證書配置 # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
提示:index指令中列出多個(gè)文件名,Nginx 按指定的順序搜索文件并返回它找到的第一個(gè)文件。
在默認(rèn)虛擬機(jī) default.conf 基礎(chǔ)上新建虛擬機(jī)。
[root@nginx ~]# vi /etc/nginx/conf.d/mysite.conf server { server_name www.soo66.com; location / { root /usr/share/nginx/base; index index.html; } } [root@cainiaoplus ~]# mkdir -p /usr/share/nginx/base [root@cainiaoplus ~]# echo '<h1>cainiaoplus</h1>' > /usr/share/nginx/base/index.html [root@cainiaoplus ~]# nginx -t -c /etc/nginx/nginx.conf #檢查配置文件 [root@cainiaoplus ~]# nginx -s reload #重載配置文件
瀏覽器訪問:www.soo66.com,可以輸出 cainiaoplus 。
[root@nginx01 ~]# vi /etc/nginx/conf.d/mystie.conf server { server_name www.soo66.com; error_page 404 403 500 502 503 504 /error.html; #配置錯(cuò)誤頁 location / { root /usr/share/nginx/base; index index.html; } } [root@cainiaoplus ~]# echo '<h1>Error</h1>' > /usr/share/nginx/error.html [root@cainiaoplus ~]# nginx -t -c /etc/nginx/nginx.conf #檢查配置文件 [root@cainiaoplus ~]# nginx -s reload #重載配置文件
瀏覽器訪問任何一個(gè)不存在的頁面,將返回自定義錯(cuò)誤 html。
location ~/\.ht { deny all; }
location ~ ^/(picture|move)/ { deny all; break; }
location ~ ^/data { deny all; }
location /imxhy/images/ { deny all; }
root /usr/share/nginx/rewrite/;
allow 208.97.167.194;
allow 222.33.1.2;
allow 231.152.49.4;
deny all;