[Nginx優化]分享nginx配置文件及優化說明

一、系統及內核方面
    根據服務器用途,建議系統最小化安裝或針對web服務器進行系統內核從新編譯;在內核參數的一些優化,以下:
# Add
net.ipv4.tcp_max_syn_backlog = 65536   #表示SYN隊列的長度
net.core.netdev_max_backlog =  32768  #進入包的最大設備隊列.
net.core.somaxconn = 32768            #listen()的默認參數,掛起請求的最大數量.
net.core.wmem_default = 8388608     #指定了發送套接字緩衝區大小的缺省值
net.core.rmem_default = 8388608    
net.core.rmem_max = 16777216      #最大socket寫buffer
net.core.wmem_max = 16777216     #最大socket讀buffer
net.ipv4.tcp_timestamps = 0    #能夠防範那些僞造的sequence號碼,關掉能夠提升性能。
net.ipv4.tcp_synack_retries = 2 
net.ipv4.tcp_syn_retries = 2   # 新鏈接,內核要發送多少個SYN鏈接請求才決定放棄。
net.ipv4.tcp_tw_recycle = 1     #開啓TCP鏈接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_reuse = 1      #容許將TIME-WAIT sockets從新用於新的TCP鏈接。
net.ipv4.ip_local_port_range = 5000  65535  #將系統對本地端口範圍限制在5000~65000javascript

二、配置方面優化
   如編譯時使用 --with-cc-opt='-O3' 增長GCC的優化;去掉Nginx的debug模式編譯(debug模式會插入不少跟蹤和ASSERT之類),這樣編譯後文件大小下降幾倍之多;
nginx配置文件
user  www www;
worker_processes 8;   #設置爲CPU數目(核數),需根據實際狀況進行設置。
error_log   logs/nginx_error.log  crit;
pid        logs/nginx.pid;php

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;  #進程可以打開的最多文件描述符數(65535)
events
{
        use epoll;  
        worker_connections 51200;  每一個工做進程容許最大的同時鏈接數css

         #服務器容許的最大鏈接數跟worker_processes 、worker_connections 有直接關係。
}java

http
{
        include       mime.types;
        default_type  application/octet-stream;node

        #charset  gb2312;
     
        server_names_hash_bucket_size 128; 
        client_header_buffer_size 32k;     #客戶端請求的Head頭緩衝區大小,若是cookie內容較大,需加大
        large_client_header_buffers 4 32k;   
        client_max_body_size 8m;     #設置客戶端可以上傳的文件大小
     
        sendfile on;
        tcp_nopush     on;
        keepalive_timeout 60;
        tcp_nodelay on;nginx

        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;
        fastcgi_intercept_errors on;
        fastcgi_hide_header Pragma;web

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.0;
        gzip_comp_level 2;
        gzip_types       text/plain application/x-javascript text/css application/xml;
        gzip_vary on;安全

        autoindex off;
        server_tokens off;
        server_name_in_redirect off;
   
        include zhuji0.conf;    #實現nginx VirtualHost
}
  
三、Nginx(針對webserver)環境運行php-cgi,可配置php加速器,這樣可提升nginx處理能力。能夠加入php加速器eaccelerator服務器


四、其餘方面
   1)因爲nginx 中有FastCGI 相關參數,FastCGI 自身的一些配置進行優化也是很重要的,咱們的web環境都使用php-fpm 來管理FastCGI,能夠修改配置文件中的如下值:
<value name="max_children">300</value>  #這能夠根據系統負載及服務器訪問量狀況進行調整。
同時處理的併發請求數,即它將開啓最多300 個子線程來處理併發鏈接。
<value name="rlimit_files">102400</value>
最多打開文件數。
<value name="max_requests">204800</value>
每一個進程在重置以前可以執行的最多請求數。
   2)修改Nginx的header假裝服務器,這更可能是爲了服務安全。
   3)  php-fpm默認靜態處理方式會使得php-cgi的進程長期佔用內存而沒法釋放,這有可能致使nginx出錯或影響nginx的性能。(max_children\request_terminate_timeout等)cookie

若是您有更好的優化方案,能夠分享一下~ QQ: 251004262 歡迎轉載~

相關文章
相關標籤/搜索