您好,登錄后才能下訂單哦!
配置文件結構
全局配置(user、worker_processes、error_log、pid)
events(網絡連接相關,worker_connections)
http(最重要的部分,大部分功能都放這里)
server(虛擬主機相關)
location(server里面)
全局配置項結構
https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/global.md
events配置項結構
https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/events.md
http配置項
https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/http.md
server配置項
https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/server.md
nginx.conf全局配置
user nobody;
#定義運行nginx服務的用戶,還可以加上組,如 user nobody nobody;
worker_processes 1;
#定義nginx子進程數量,即提供服務的進程數量,該數值建議和服務cpu核數保持一致。
#除了可以定義數字外,還可以定義為auto,表示讓系統自動調整。
error_log logs/error.log;
#定義錯誤日志的路徑,可以是相對路徑(相對prefix路徑的),也可以是絕對路徑。
#該配置可以在此處定義,也可以定義到http、server、location里
error_log logs/error.log notice;
#定義錯誤日志路徑以及日志級別.
#錯誤日志級別:常見的錯誤日志級別有[debug|info|notice|warn|error|crit|alert|emerg],級別越高記錄的信息越少。
#如果不定義默認是error
pid logs/nginx.pid;
#定義nginx進程pid文件所在路徑,可以是相對路徑,也可以是絕對路徑。
worker_rlimit_nofile 100000;
#定義nginx最多打開文件數限制。如果沒設置的話,這個值為操作系統(ulimit -n)的限制保持一致。
#把這個值設高,nginx就不會有“too many open files”問題了。
#events配置部分
worker_connections 1024;
#定義每個work_process同時開啟的最大連接數,即允許最多只能有這么多連接。
accept_mutex on;
#當某一個時刻只有一個網絡連接請求服務器時,服務器上有多個睡眠的進程會被同時叫醒,這樣會損耗一定的服務器性能。
#Nginx中的accept_mutex設置為on,將會對多個Nginx進程(worker processer)接收連接時進行序列化,防止多個進程爭搶資源。
#默認就是on。
multi_accept on;
#nginx worker processer可以做到同時接收多個新到達的網絡連接,前提是把該參數設置為on。
#默認為off,即每個worker process一次只能接收一個新到達的網絡連接。
use epoll;
#Nginx服務器提供了多個事件驅動器模型來處理網絡消息。
#其支持的類型有:select、poll、kqueue、epoll、rtsing、/dev/poll以及eventport。
#http配置部分
#官方文檔 http://nginx.org/en/docs/
#參考鏈接: https://segmentfault.com/a/1190000012672431
#參考鏈接: https://segmentfault.com/a/1190000002797601
#參考鏈接:http的header https://kb.cnblogs.com/page/92320/
MIME-Type
include mime.types; //cat conf/mime.types
#定義nginx能識別的網絡資源媒體類型(如,文本、html、js、css、流媒體等)
default_type application/octet-stream;
#定義默認的type,如果不定義改行,默認為text/plain.
log_format
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#其中main為日志格式的名字,后面的為nginx的內部變量組成的一串字符串。
access_log logs/access.log main;
#定義日志的路徑以及采用的日志格式,該參數可以在server配置塊中定義。
sendfile on;
#是否調用sendfile函數傳輸文件,默認為off,使用sendfile函數傳輸,可以減少user mode和kernel mode的切換,從而提升服務器性能。
#對于普通應用設為 on,如果用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。
sendfile_max_chunk 128k;
#該參數限定Nginx worker process每次調用sendfile()函數傳輸數據的最大值,默認值為0,如果設置為0則無限制。
tcp_nopush on;
#當tcp_nopush設置為on時,會調用tcp_cork方法進行數據傳輸。
#使用該方法會產生這樣的效果:當應用程序產生數據時,內核不會立馬封裝包,而是當數據量積累到一定量時才會封裝,然后傳輸。這樣有助于解決網絡堵塞問題。
#默認值為on。舉例:快遞員收快遞、發快遞,包裹累積到一定量才會發,節省運輸成本。
keepalive_timeout 65 60;
#該參數有兩個值,第一個值設置nginx服務器與客戶端會話結束后仍舊保持連接的最長時間,單位是秒,默認為75s。
#第二個值可以省略,它是針對客戶端的瀏覽器來設置的,可以通過curl -I看到header信息中有一項Keep-Alive: timeout=60,如果不設置就沒有這一項。
#第二個數值設置后,瀏覽器就會根據這個數值決定何時主動關閉連接,Nginx服務器就不操心了。但有的瀏覽器并不認可該參數。
send_timeout
#這個超時時間是發送響應的超時時間,即Nginx服務器向客戶端發送了數據包,但客戶端一直沒有去接收這個數據包。
#如果某個連接超過send_timeout定義的超時時間,那么Nginx將會關閉這個連接。
client_max_body_size 10m;
#瀏覽器在發送含有較大HTTP包體的請求時,其頭部會有一個Content-Length字段,client_max_body_size是用來限制Content-Length所示值的大小的。
#這個限制包體的配置不用等Nginx接收完所有的HTTP包體,就可以告訴用戶請求過大不被接受。會返回413狀態碼。
#例如,用戶試圖上傳一個1GB的文件,Nginx在收完包頭后,發現Content-Length超過client_max_body_size定義的值,
#就直接發送413(Request Entity Too Large)響應給客戶端。
gzip on;
#是否開啟gzip壓縮。
gzip_min_length 1k;
#設置允許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取。默認值是20。建議設置成大于1k的字節數,小于1k可能會越壓越大。
gzip_buffers 4 16k;
#設置系統獲取幾個單位的buffer用于存儲gzip的壓縮結果數據流。4 16k代表分配4個16k的buffer。
gzip_http_version 1.1;
#用于識別 http 協議的版本,早期的瀏覽器不支持 Gzip 壓縮,用戶會看到亂碼,所以為了支持前期版本加上了這個選項。
#如果你用了Nginx反向代理并期望也啟用Gzip壓縮的話,由于末端通信是http/1.1,故請設置為 1.1。
gzip_comp_level 6;
#gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)
gzip_types mime-type ... ;
#匹配mime類型進行壓縮,無論是否指定,”text/html”類型總是會被壓縮的。
#在conf/mime.conf里查看對應的type。
#示例:gzip_types text/plain application/x-javascript text/css text/html application/xml;
gzip_proxied any;
#Nginx作為反向代理的時候啟用,決定開啟或者關閉后端服務器返回的結果是否壓縮,匹配的前提是后端服務器必須要返回包含”Via”的 header頭。
#以下為可用的值:
#off - 關閉所有的代理結果數據的壓縮
#expired - 啟用壓縮,如果header頭中包含 "Expires" 頭信息
#no-cache - 啟用壓縮,如果header頭中包含 "Cache-Control:no-cache" 頭信息
#no-store - 啟用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息
#private - 啟用壓縮,如果header頭中包含 "Cache-Control:private" 頭信息
#no_last_modified - 啟用壓縮,如果header頭中不包含 "Last-Modified" 頭信息
#no_etag - 啟用壓縮 ,如果header頭中不包含 "ETag" 頭信息
#auth - 啟用壓縮 , 如果header頭中包含 "Authorization" 頭信息
#any - 無條件啟用壓縮
gzip_vary on;
#和http頭有關系,會在響應頭加個 Vary: Accept-Encoding ,可以讓前端的緩存服務器緩存經過gzip壓縮的頁面,例如,用Squid緩存經過Nginx壓縮的數據。
nginx.conf server部分配置
server{} 包含在http{}內部,每一個server{}都是一個虛擬主機(站點)。
以下為nginx.conf配置文件中server{}部分的內容。
server {
listen 80; //監聽端口為80,可以自定義其他端口,也可以加上IP地址,如,listen 127.0.0.1:8080;
server_name localhost; //定義網站域名,可以寫多個,用空格分隔。
#charset koi8-r; //定義網站的字符集,一般不設置,而是在網頁代碼中設置。
#access_log logs/host.access.log main; //定義訪問日志,可以針對每一個server(即每一個站點)設置它們自己的訪問日志。
##在server{}里有很多location配置段
location / {
root html; //定義網站根目錄,目錄可以是相對路徑也可以是絕對路徑。
index index.html index.htm; //定義站點的默認頁。
}
#error_page 404 /404.html; //定義404頁面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; //當狀態碼為500、502、503、504時,則訪問50x.html
location = /50x.html {
root html; //定義50x.html所在路徑
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#定義訪問php腳本時,將會執行本location{}部分指令
#location ~ \.php$ {
# proxy_pass http://127.0.0.1; //proxy_pass后面指定要訪問的url鏈接,用proxy_pass實現代理。
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000; //定義FastCGI服務器監聽端口與地址,支持兩種形式,1 IP:Port, 2 unix:/path/to/sockt
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; //定義SCRIPT_FILENAME變量,后面的路徑/scripts為上面的root指定的目錄
# include fastcgi_params; //引用prefix/conf/fastcgi_params文件,該文件定義了fastcgi相關的變量
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht { //訪問的url中,以/.ht開頭的,如,www.example.com/.htaccess,會被拒絕,返回403狀態碼。
# deny all; //這里的all指的是所有的請求。
#}
}
#
#server {
#}
#
#server {
#}
線上nginx的配置文件就不分享了,涉及保密協議
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。