Nginx 配置文件優化

 user www www;
 #用戶&組
 worker_processes auto;
 #一般是CPU核的數量存儲數據的硬盤數量及負載模式,不肯定時將其設置爲可用的CPU內核數(設置爲「auto」將嘗試自動檢測它)
 error_log /usr/local/nginx/logs/error.log crit;
 pid /usr/local/nginx/logs/nginx.pid;
 #指定pid文件的位置,默認值就能夠

 worker_rlimit_nofile 65535;
 #更改worker進程的最大打開文件數限制
 events {
 use epoll;
 multi_accept on;
 #在Nginx接到一個新鏈接通知後,調用accept()來接受盡可能多的鏈接
 worker_connections 65535;
 #最大訪問客戶數,修改此值時,不能超過 worker_rlimit_nofile 值
 }
 http {
 include mime.types;
 default_type application/octet-stream;
 #使用的默認的 MIME-type
 log_format '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 #定義日誌格式
 charset UTF-8;
 #設置頭文件默認字符集
 server_tokens off;
 #Nginx打開網頁報錯時,關閉版本號顯示
 access_log off;
 sendfile on;
 tcp_nopush on;
 #告訴nginx在一個數據包裏發送全部頭文件,而不一個接一個的發送
 tcp_nodelay on;
 #是否啓用 nagle 緩存算法,告訴nginx不要緩存數據
 sendfile_max_chunk 512k;
 #每一個進程每次調用傳輸數量不能大於設定的值,默認爲0,即不設上限
 keepalive_timeout 65;
 #HTTP鏈接持續時間,值越大無用的線程變的越多,0:關閉此功能,默認爲75
 client_header_timeout 10;
 client_body_timeout 10;
 #以上兩項是設置請求頭和請求體各自的超時時間
 reset_timedout_connection on;
 #告訴nginx關閉不響應的客戶端鏈接
 send_timeout 30;
 #客戶端響應超時時間,若客戶端中止讀取數據,釋放過時的客戶端鏈接,默認60s
 limit_conn_zone $binary_remote_addr zone=addr:5m;
 #用於保存各類key,如:當前鏈接數的共享內存的參數,5m是5兆字節,這個值應該被設置的足夠大,以存儲(32K*5)32byte狀態或者(16K*5)64byte狀態
 limit_conn addr 100;
 #key最大鏈接數,這裏key是addr,我設置的值是100,這樣就容許每一個IP地址最多同時打開100個鏈接數
 server_names_hash_bucket_size 128;
 #nginx啓動出現could not build the server_names_hash, you should increase錯誤時,請提升這個參數的值通常設成64就夠了
 client_body_buffer_size 10K;
 client_header_buffer_size 32k;
 #客戶端請求頭部的緩衝區大小,這個能夠根據你的系統分頁大小進行設置
 large_client_header_buffers 4 32k;
 client_max_body_size 8m;
 #上傳文件大小設置,通常是動態應用類型

 #線程池優化,使用--with-threads配置參數編譯
 #aio threads;
 #thread_pool default threads=32 max_queue=65536;
 #aio threads=default;
 #關於更多線程請點擊查看

 #fastcgi性能調優

 fastcgi_connect_timeout 300;
 #鏈接到後端 Fastcgi 的超時時間
 fastcgi_send_timeout 300;
 #與 Fastcgi 創建鏈接後多久不傳送數據,就會被自動斷開
 fastcgi_read_timeout 300;
 #接收 Fastcgi 應答超時時間
 fastcgi_buffers 4 64k;
 #能夠設置爲 FastCGI 返回的大部分應答大小,這樣能夠處理大部分請求,較大的請求將被緩衝到磁盤
 fastcgi_buffer_size 64k;
 #指定讀取 Fastcgi 應答第一部分須要多大的緩衝區,能夠設置gastcgi_buffers選項指定的緩衝區大小
 fastcgi_busy_buffers_size 128k;
 #繁忙時的buffer,能夠是fastcgi_buffer的兩倍
 fastcgi_temp_file_write_size 128k;
 #在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍,該值越小越可能報 502 BadGateway
 fastcgi_intercept_errors on;
 #是否傳遞4**&5**錯誤信息到客戶端,或容許nginx使用error_page處理錯誤信息.

 #fastcgi_cache配置優化(如果多站點虛擬主機,除fastcgi_cache_path(注意keys_zone=名稱)所有加入php模塊中)

 fastcgi_cache fastcgi_cache;
 #開啓FastCGI緩存並指定一個名稱,開啓緩存能夠下降CPU的負載,防止502錯誤出現
 fastcgi_cache_valid 200 302 301 1h;
 #定義哪些http頭要緩存
 fastcgi_cache_min_uses 1;
 #URL通過多少次請求將被緩存
 fastcgi_cache_use_stale error timeout invalid_header http_500;
 #定義哪些狀況下用過時緩存
 #fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
 fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=fastcgi_cache:15m inactive=1d max_size=1g;
 #keys_zone=緩存空間的名字,cache=用多少內存,inactive=默認失效時間,max_size=最多用多少硬盤空間。
 #緩存目錄,能夠設置目錄層級,舉例:1:2會生成16*256個字目錄
 fastcgi_cache_key $scheme$request_method$host$request_uri;
 #定義fastcgi_cache的key
 #fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

 #響應頭

 add_header X-Cache $upstream_cache_status;
 #緩存命中
 add_header X-Frame-Options SAMEORIGIN;
 #是爲了減小點擊劫持(Clickjacking)而引入的一個響應頭
 add_header X-Content-Type-Options nosniff;

 #GZIP性能優化

 gzip on;
 gzip_min_length 1100;
 #對數據啓用壓縮的最少字節數,如:請求小於1K文件,不要壓縮,壓縮小數據會下降處理此請求的全部進程速度
 gzip_buffers 4 16k;
 gzip_proxied any;
 #容許或者禁止壓縮基於請求和響應的響應流,若設置爲any,將會壓縮全部請求
 gzip_http_version 1.0;
 gzip_comp_level 9;
 #gzip壓縮等級在0-9內,數值越大壓縮率越高,CPU消耗也就越大
 gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json image/jpeg image/gif image/png;
 #壓縮類型
 gzip_vary on;
 #varyheader支持,讓前端的緩存服務器識別壓縮後的文件,代理
 include /usr/local/nginx/conf/vhosts/*.conf;
 #在當前文件中包含另外一個文件內容的指令

 #靜態文件的緩存性能調優

 open_file_cache max=65535 inactive=20s;
 #這個將爲打開文件指定緩存,max 指定緩存數量.建議和打開文件數一致.inactive 是指通過多長時間文件沒被請求後刪除緩存
 open_file_cache_valid 30s;
 #這個是指多長時間檢查一次緩存的有效信息,例如我一直訪問這個文件,30秒後檢查是否更新,反之更新
 open_file_cache_min_uses 2;
 #定義了open_file_cache中指令參數不活動時間期間裏最小的文件數
 open_file_cache_errors on;
 #NGINX能夠緩存在文件訪問期間發生的錯誤,這須要設置該值纔能有效,若是啓用錯誤緩存.則在訪問資源(不查找資源)時.NGINX會報告相同的錯誤

 #資源緩存優化
 server {

 #防盜鏈設置

 location ~* \.(jpg|gif|png|swf|flv|wma|asf|mp3|mmf|zip|rar)$ {
 #防盜類型
 valid_referers none blocked *.damowang.com damowang.com;
 #none blocked參數可選.容許使用資源文件的域名
 if ($invalid_referer) {
 return 403;
 #rewrite ^/ https://damowang.com
 #若不符合條件域名,則返回403或404也能夠是域名
 }
 }
 location ~ .*\.(js|css)$ {
 access_log off;
 expires 180d;
 #健康檢查或圖片.JS.CSS日誌.不須要記錄日誌.在統計PV時是按照頁面計算.並且寫入頻繁會消耗IO.
 }
 location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|swf|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
 access_log off;
 log_not_found off;
 expires 180d;
 #視圖&元素不多改變.可將內容緩存到用戶本地.再次訪問網站時就無需下載.節省流量.加快訪問速度.緩存180天
 }
 }
 server {
 listen 80 default_server;
 server_name .damowang.com;
 rewrite ^ https://damowang.com$request_uri?;
 }
 server {
 listen 443 ssl http2 default_server;
 listen [::]:443 ssl http2;
 server_name .damowang.com;
 root /home/web/damowang;
 index index.html index.php;

 ssl_certificate /etc/letsencrypt/live/damowang.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/damowang.com/privkey.pem;

 ssl_dhparam /etc/nginx/ssl/dhparam.pem;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
 ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

 ssl_session_cache shared:SSL:50m;
 ssl_session_timeout 1d;
 ssl_session_tickets off;
 ssl_prefer_server_ciphers on;
 add_header Strict-Transport-Security max-age=15768000;
 ssl_stapling on;
 ssl_stapling_verify on;

 include /usr/local/nginx/conf/rewrite/wordpress.conf;
 access_log /usr/local/nginx/logs/damowang.log;

 location ~ \.php$ {
 root /home/web/damowang;
 #fastcgi_pass 127.0.0.1:9000;
 fastcgi_pass unix:/var/run/www/php-cgi.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
 }
 }

 

 user www www;
 #用戶&組
 worker_processes auto;
 #一般是CPU核的數量存儲數據的硬盤數量及負載模式,不肯定時將其設置爲可用的CPU內核數(設置爲「auto」將嘗試自動檢測它)
 error_log /usr/local/nginx/logs/error.log crit;
 pid /usr/local/nginx/logs/nginx.pid;
 #指定pid文件的位置,默認值就能夠

 worker_rlimit_nofile 65535;
 #更改worker進程的最大打開文件數限制
 events {
 use epoll;
 multi_accept on;
 #在Nginx接到一個新鏈接通知後,調用accept()來接受盡可能多的鏈接
 worker_connections 65535;
 #最大訪問客戶數,修改此值時,不能超過 worker_rlimit_nofile 值
 }
 http {
 include mime.types;
 default_type application/octet-stream;
 #使用的默認的 MIME-type
 log_format '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 #定義日誌格式
 charset UTF-8;
 #設置頭文件默認字符集
 server_tokens off;
 #Nginx打開網頁報錯時,關閉版本號顯示
 access_log off;
 sendfile on;
 tcp_nopush on;
 #告訴nginx在一個數據包裏發送全部頭文件,而不一個接一個的發送
 tcp_nodelay on;
 #是否啓用 nagle 緩存算法,告訴nginx不要緩存數據
 sendfile_max_chunk 512k;
 #每一個進程每次調用傳輸數量不能大於設定的值,默認爲0,即不設上限
 keepalive_timeout 65;
 #HTTP鏈接持續時間,值越大無用的線程變的越多,0:關閉此功能,默認爲75
 client_header_timeout 10;
 client_body_timeout 10;
 #以上兩項是設置請求頭和請求體各自的超時時間
 reset_timedout_connection on;
 #告訴nginx關閉不響應的客戶端鏈接
 send_timeout 30;
 #客戶端響應超時時間,若客戶端中止讀取數據,釋放過時的客戶端鏈接,默認60s
 limit_conn_zone $binary_remote_addr zone=addr:5m;
 #用於保存各類key,如:當前鏈接數的共享內存的參數,5m是5兆字節,這個值應該被設置的足夠大,以存儲(32K*5)32byte狀態或者(16K*5)64byte狀態
 limit_conn addr 100;
 #key最大鏈接數,這裏key是addr,我設置的值是100,這樣就容許每一個IP地址最多同時打開100個鏈接數
 server_names_hash_bucket_size 128;
 #nginx啓動出現could not build the server_names_hash, you should increase錯誤時,請提升這個參數的值通常設成64就夠了
 client_body_buffer_size 10K;
 client_header_buffer_size 32k;
 #客戶端請求頭部的緩衝區大小,這個能夠根據你的系統分頁大小進行設置
 large_client_header_buffers 4 32k;
 client_max_body_size 8m;
 #上傳文件大小設置,通常是動態應用類型

 #線程池優化,使用--with-threads配置參數編譯
 #aio threads;
 #thread_pool default threads=32 max_queue=65536;
 #aio threads=default;
 #關於更多線程請點擊查看

 #fastcgi性能調優

 fastcgi_connect_timeout 300;
 #鏈接到後端 Fastcgi 的超時時間
 fastcgi_send_timeout 300;
 #與 Fastcgi 創建鏈接後多久不傳送數據,就會被自動斷開
 fastcgi_read_timeout 300;
 #接收 Fastcgi 應答超時時間
 fastcgi_buffers 4 64k;
 #能夠設置爲 FastCGI 返回的大部分應答大小,這樣能夠處理大部分請求,較大的請求將被緩衝到磁盤
 fastcgi_buffer_size 64k;
 #指定讀取 Fastcgi 應答第一部分須要多大的緩衝區,能夠設置gastcgi_buffers選項指定的緩衝區大小
 fastcgi_busy_buffers_size 128k;
 #繁忙時的buffer,能夠是fastcgi_buffer的兩倍
 fastcgi_temp_file_write_size 128k;
 #在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍,該值越小越可能報 502 BadGateway
 fastcgi_intercept_errors on;
 #是否傳遞4**&5**錯誤信息到客戶端,或容許nginx使用error_page處理錯誤信息.

 #fastcgi_cache配置優化(如果多站點虛擬主機,除fastcgi_cache_path(注意keys_zone=名稱)所有加入php模塊中)

 fastcgi_cache fastcgi_cache;
 #開啓FastCGI緩存並指定一個名稱,開啓緩存能夠下降CPU的負載,防止502錯誤出現
 fastcgi_cache_valid 200 302 301 1h;
 #定義哪些http頭要緩存
 fastcgi_cache_min_uses 1;
 #URL通過多少次請求將被緩存
 fastcgi_cache_use_stale error timeout invalid_header http_500;
 #定義哪些狀況下用過時緩存
 #fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
 fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=fastcgi_cache:15m inactive=1d max_size=1g;
 #keys_zone=緩存空間的名字,cache=用多少內存,inactive=默認失效時間,max_size=最多用多少硬盤空間。
 #緩存目錄,能夠設置目錄層級,舉例:1:2會生成16*256個字目錄
 fastcgi_cache_key $scheme$request_method$host$request_uri;
 #定義fastcgi_cache的key
 #fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

 #響應頭

 add_header X-Cache $upstream_cache_status;
 #緩存命中
 add_header X-Frame-Options SAMEORIGIN;
 #是爲了減小點擊劫持(Clickjacking)而引入的一個響應頭
 add_header X-Content-Type-Options nosniff;

 #GZIP性能優化

 gzip on;
 gzip_min_length 1100;
 #對數據啓用壓縮的最少字節數,如:請求小於1K文件,不要壓縮,壓縮小數據會下降處理此請求的全部進程速度
 gzip_buffers 4 16k;
 gzip_proxied any;
 #容許或者禁止壓縮基於請求和響應的響應流,若設置爲any,將會壓縮全部請求
 gzip_http_version 1.0;
 gzip_comp_level 9;
 #gzip壓縮等級在0-9內,數值越大壓縮率越高,CPU消耗也就越大
 gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json image/jpeg image/gif image/png;
 #壓縮類型
 gzip_vary on;
 #varyheader支持,讓前端的緩存服務器識別壓縮後的文件,代理
 include /usr/local/nginx/conf/vhosts/*.conf;
 #在當前文件中包含另外一個文件內容的指令

 #靜態文件的緩存性能調優

 open_file_cache max=65535 inactive=20s;
 #這個將爲打開文件指定緩存,max 指定緩存數量.建議和打開文件數一致.inactive 是指通過多長時間文件沒被請求後刪除緩存
 open_file_cache_valid 30s;
 #這個是指多長時間檢查一次緩存的有效信息,例如我一直訪問這個文件,30秒後檢查是否更新,反之更新
 open_file_cache_min_uses 2;
 #定義了open_file_cache中指令參數不活動時間期間裏最小的文件數
 open_file_cache_errors on;
 #NGINX能夠緩存在文件訪問期間發生的錯誤,這須要設置該值纔能有效,若是啓用錯誤緩存.則在訪問資源(不查找資源)時.NGINX會報告相同的錯誤

 #資源緩存優化
 server {

 #防盜鏈設置

 location ~* \.(jpg|gif|png|swf|flv|wma|asf|mp3|mmf|zip|rar)$ {
 #防盜類型
 valid_referers none blocked *.damowang.com damowang.com;
 #none blocked參數可選.容許使用資源文件的域名
 if ($invalid_referer) {
 return 403;
 #rewrite ^/ https://damowang.com
 #若不符合條件域名,則返回403或404也能夠是域名
 }
 }
 location ~ .*\.(js|css)$ {
 access_log off;
 expires 180d;
 #健康檢查或圖片.JS.CSS日誌.不須要記錄日誌.在統計PV時是按照頁面計算.並且寫入頻繁會消耗IO.
 }
 location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|swf|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
 access_log off;
 log_not_found off;
 expires 180d;
 #視圖&元素不多改變.可將內容緩存到用戶本地.再次訪問網站時就無需下載.節省流量.加快訪問速度.緩存180天
 }
 }
 server {
 listen 80 default_server;
 server_name .damowang.com;
 rewrite ^ https://damowang.com$request_uri?;
 }
 server {
 listen 443 ssl http2 default_server;
 listen [::]:443 ssl http2;
 server_name .renwole.com;
 root /home/web/renwole;
 index index.html index.php;

 ssl_certificate /etc/letsencrypt/live/renwole.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/renwole.com/privkey.pem;

 ssl_dhparam /etc/nginx/ssl/dhparam.pem;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
 ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

 ssl_session_cache shared:SSL:50m;
 ssl_session_timeout 1d;
 ssl_session_tickets off;
 ssl_prefer_server_ciphers on;
 add_header Strict-Transport-Security max-age=15768000;
 ssl_stapling on;
 ssl_stapling_verify on;

 include /usr/local/nginx/conf/rewrite/wordpress.conf;
 access_log /usr/local/nginx/logs/renwole.log;

 location ~ \.php$ {
 root /home/web/renwole;
 #fastcgi_pass 127.0.0.1:9000;
 fastcgi_pass unix:/var/run/www/php-cgi.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
 }
 }
相關文章
相關標籤/搜索