標準化: Nginx: 一:系統優化 1,內核優化: vi /etc/sysctl.conf 添加 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness = 0 最大程度使用物理內存 swappiness=100的時候表示積極的使用swap分區 net.core.somaxconn = 65535 經常在它們的配置文件中有設置隊列大小的選項。大的偵聽隊列對防止拒絕服務 DoS 攻擊也會有所幫助 net.ipv4.tcp_max_syn_backlog = 65535還未得到客戶端確認的鏈接請求﹐須要保存在隊列中最大數目 net.ipv4.tcp_fin_timeout = 30 超時時間 net.ipv4.tcp_tw_reuse = 1 1表示開啓重用。容許將TIME-WAIT sockets從新用於新的TCP鏈接,默認爲0 net.ipv4.tcp_retries2 = 5 TCP失敗重傳次數,默認值5,意味着重傳5次才完全放棄.可減小到5,以儘早釋放內核資源. net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_keepalive_time = 1800 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是3小時,改成20分鐘 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 5 net.core.netdev_max_backlog = 8192 2,文件優化: 修改ulimit 1.vi /etc/security/limits.conf * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 * soft stack unlimited 3,nginx安裝: Nginx安裝分爲yum安裝以及源碼安裝 源碼安裝這些必須加上, ./configure --user=nginx --group=nginx --prefix=/opt/nginx --with-pcre=/root/pcre-8.37 --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module Make Make install 若是作健康檢查安裝nginx_upstream_check_module,模塊 wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master unzip master tar -zxvf nginx-1.8.0.tar.gz cd nginx-1.8.0 patch -p1 < ../nginx_upstream_check_module-master/check_1.7.5+.patch 編譯時候須要加上--add-module=nginx_upstream_check_module-master/ 4,nginx配置文件 nginx配置文件參數調整 user nginx; worker_processes 2; 通常一個進程足夠了,你能夠把鏈接數設得很大。 若是有SSL、gzip這些比較消耗CPU的工做,並且是多核CPU的話,能夠設爲和CPU的數量同樣。 或者要處理不少不少的小文件,並且文件總大小比內存大不少的時候,也能夠把進程數增長, 以充分利用IO帶寬(主要彷佛是IO操做有block)。 pid logs/nginx.pid; worker_rlimit_nofile 65535; 更改worker進程的最大打開文件數限制 events { use epoll; 支持一個進程打開大數目的socket描述符 IO效率不隨FD數目增長而線性降低 worker_connections 65535; 若是nginx 中worker_connections 值設置是1024,worker_processes 值設置是4,按反向代理模式下最大鏈接數的理論計算公式: 最大鏈接數 = worker_processes * worker_connections/4 查看相關資料,生產環境中worker_connections 建議值最好超過9000,計劃將一臺nginx 設置爲10240,再觀察一段時間。 } sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; #開啓壓縮 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; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; 日誌格式 log_format json '{"@timestamp":"$time_iso8601",' '"@version":"1",' '"host":"$server_addr",' '"client":"$remote_addr",' '"upAddr":"$upstream_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_time,' '"domain":"$host",' '"url":"$uri",' '"status":"$status"}'; access_log /var/log/nginx/access.log json; 作代理: location / { proxy_pass http://*.*.*; #代理 proxy_set_header Host $host; # Host」 header設置爲$host變量,其中包含了原始的請求主機信息。 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #後端獲取真實ip proxy_set_header X-Forwarded-Proto $scheme; # X-Forwarded-Proto header爲代理服務器提供了原始請求的schema信息(http或https請求)。 proxy_cookie_path / /; proxy_set_header Cookie $http_cookie; #設置cookie } 紅色標記必須帶上。