nginx配置文件詳解
#關掉訪問日志可以優化服務器 #定義Nginx運行的用戶和用戶組 #user nobody; #nginx進程數 #如果NginX提供了SLL或者gzip,對cpu的使用率較高,且系統有兩個以上的cpu #可設置為等于cpu總核心數 worker_processes 1;#設置最大打開文件數的限制 worker_rlimit_nofile 65535;S#error_log x:/xxxxx/xxxx/log/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #進程文件 pid logs/nginx.pid;#Nginx的事件模塊,用于控制Nginx如何處理連接,參數會影響性能,慎重設置。 events { #單個后臺worker process進程的最大并發鏈接數 #書本建議值為 65535 worker_connections 1024; #woker_connections 65535; # 并發總數是 worker_processes 和 worker_connections 的乘積 # 即 max_clients = worker_processes * worker_connections # 在設置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什么 # 為什么上面反向代理要除以4,應該說是一個經驗值 # 根據以上條件,正常情況下的Nginx Server可以應付的最大連接數為:4 * 8000 = 32000 # worker_connections 值的設置跟物理內存大小有關 # 因為并發受IO約束,max_clients的值須小于系統可以打開的最大文件數 # 而系統可以打開的最大文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右 # 我們來看看360M內存的VPS可以打開的文件句柄數是多少: # $ cat /proc/sys/fs/file-max # 輸出 34336 # 32000 < 34336,即并發連接總數小于系統可以打開的文件句柄總數,這樣就在操作系統可以承受的范圍之內 # 所以,worker_connections 的值需根據 worker_processes 進程數目和系統可以打開的最大文件總數進行適當地進行設置 # 使得并發總數小于操作系統可以打開的最大文件數目 # 其實質也就是根據主機的物理CPU和內存進行配置 # 當然,理論上的并發總數可能會和實際有所偏差,因為主機還有其他的工作進程需要消耗系統資源。 # ulimit -SHn 65535 }#Nginx的HTTP內核模塊,設定http服務器 http { #文件擴展名與文件類型映射表 include mime.types; #默認文件類型 default_type application/octet-stream; #默認編碼 #charset utf-8; #隱藏Nginx版本號 #server_tokens off #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 x:/xxxx/xxxx/log/access.log main; #關閉日志 #access_log off; #開啟高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件 #對于普通應用設為 on, #如果用來進行下載等應用磁盤IO重負載應用,可設置為off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。 #注意:如果圖片顯示不正常把這個改成off。 sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 60; #啟用gzip壓縮功能 #gzip on; #用于設置響應體的最小長度,單位為字節。 #gzip_min_length 1000; #設置啟用或禁用從代理服務器上收到的響應體Gzip壓縮功能 # expired---如果Expires header阻止緩存,那么啟用壓縮 # auth -----假如設置了Authorization header,則啟用壓縮 #gzip_proxied expired no-cache no-store private auth; #gzip_types text/plain application/xml; #gzip_disable "MSIE [1-6]."; #用于指定客戶端請求體的最大值。超過將收到413錯誤 client_max_body_size 16m; #指定客戶端請求體緩存的大小。 #入股請求體大于該緩存大小,那么整個請求體或者請求體的某些部分會被寫入臨時文件 #默認值 8k/16k #默認值等于兩頁面的大小,頁面的大小依賴于所在的操作系統 client_body_buffer_size 256k; proxy_temp_file_write_size 128k; proxy_temp_path x:/xxx/xxxxx/public; #levels設置目錄層次 #keys_zone設置緩存名字和共享內存大小 #inactive在指定時間內沒人訪問則被刪除在這里是1天 #max_size最大緩存空間 #proxy_cache_path x:/xxxx/xxx/cache levels=1:2 keys_zone=cache_one:256m inactive=2d max_size=300m; upstream mywebapp_thin { #指定服務器組的負載均衡方法,請求基于客戶端的IP地址在服務器間進行分發。 #IPv4地址的前三個字節或者IPv6的整個地址,會被用來作為一個散列key。 #這種方法可以確保從同一個客戶端過來的請求,會被傳給同一臺服務器。 #除了當服務器被認為不可用的時候,這些客戶端的請求會被傳給其他服務器, #而且很有可能也是同一臺服務器。 #如果使用了該指明,那么將會導致客戶端的請求以客戶端的IP地址分配在upstream中的server之間。 #它的關健技術在于對這個請求客戶但ip地址進行哈希計算 #這種方法保證了客戶端請求總是能夠傳遞到同一臺后臺服務器,但是如果該服務器被認定為無效, #那么這個客戶端的請求將會被傳遞到其他服務器。 #可以高概率將客戶端請求總是連接到同一臺服務器 #如果使用這個指令,就不可以使用權重。 ip_hash; #upstream的負載均衡,weight是權重,可以根據機器配置定義權重。 #weigth參數表示權值,權值越高被分配到的幾率越大。 #如果服務器要移除,在 ip后加個down #backup表示備用 server 127.0.0.1:3000; server 127.0.0.1:3001 down; } #設定虛擬主機配置 server { #監聽端口 listen 80 default_server; #定義使用 localhost訪問 #域名可以有多個,用空格隔開 #將進入的HTTP請求的主機頭(Host header)與Nginx配置文件中各個Server{...}區段比較 #并且選擇第一個被匹配的server區段——。 #服務器名字按照一下順序處理: #1.全域名,靜態域名 #2.開始部分使用通配符的域名,例如:*.exmple.com #3.結尾部分使用通配符的域名,例如:www.example.* #4.帶有正則表達式的域名。 server_name localhost; #默認編碼 #charset koi8-r; #rewrite_log on; #設定本虛擬主機的訪問日志 #access_log logs/host.access.log main; #access_log x:/xxx/xxx/log/host.access.log; root x:/xxx/xxx/public; #圖片緩存時間設置 #location ~* ^/(images|javascripts|stylesheets|img)/ #location ~* .(gif|jpg|jpeg|png|bmp|swf)$ #{ # root x:/xx/xxx/public; # access_log off; # log_not_found off; # expires max; #通過key來hash,定義KEY的值 # proxy_cache_key $host$uri$is_args$args; #根keys_zone后的內容對應 # proxy_cache cache_one; #哪些狀態緩存多長時間 # proxy_cache_valid 200 302 7d; #其他的緩存多長時間 # proxy_cache_valid 301 3d; # proxy_cache_valid any 1m; # if (!-f $request_filename) { # proxy_pass http://mywebapp_thin; # break; # } #break; #} #允許根據URI的需要進行配置訪問 #可以跟進字面字符串配置也可以根據正則表達式配置 #如果使用正則表達式配置,必須使用一下前綴 # “~” 區分大小寫匹配 # “~*” 不區分大小寫 #先按照字面字符串檢測,然后再正則表達式,正則表達式 #默認請求,對 "/" 啟用反向代理 location / { #定義了一個請求的根文檔目錄 root x:/xxx/xxx/public; #定義首頁索引文件的名稱 index index.html index.htm; if (!-f $request_filename) { proxy_pass http://mywebapp_thin; break; } proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #以下是一些反向代理的配置,可選。 proxy_set_header Host $host; #允許客戶端請求的最大單文件字節數 client_max_body_size 10m; #緩沖區代理緩沖用戶端請求的最大字節數, client_body_buffer_size 128k; #nginx跟后端服務器連接超時時間(代理連接超時) proxy_connect_timeout 90; #后端服務器數據回傳時間(代理發送超時) proxy_send_timeout 90; #連接成功后,后端服務器響應時間(代理接收超時) proxy_read_timeout 90; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小 proxy_buffer_size 4k; #proxy_buffers緩沖區,網頁平均在32k以下的設置 proxy_buffers 4 32k; #代理的時候,開啟或關閉緩沖后端服務器的響應。 proxy_buffering on; #高負荷下緩沖大小(proxy_buffers*2) proxy_busy_buffers_size 64k; #設定緩存文件夾大小,大于這個值,將從upstream服務器傳 proxy_temp_file_write_size 64k; #通過key來hash,定義KEY的值 # proxy_cache_key $host$uri$is_args$args; #根keys_zone后的內容對應 # proxy_cache cache_one; #哪些狀態緩存多長時間 # proxy_cache_valid 200 302 7d; #其他的緩存多長時間 # proxy_cache_valid 301 3d; # proxy_cache_valid any 1m; } #指定一個uri,在訪問出錯的時候會顯示的頁面 #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # # 定義錯誤提示頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # 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_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} #圖片緩存時間設置 #location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ #{ # expires 10d; #} #JS和CSS緩存時間設置 #location ~ .*.(js|css)?$ #{ # expires 1h; #} #FastCGI相關參數是為了改善網站的性能:減少資源占用,提高訪問速度。 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # 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; # } #} }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!