NGINX優化之路(一)

1、爲了安全,隱藏Nginx系統版本號,修改軟件名稱node

[root@blog ~]# vim  /home/tools/nginx-1.6.3/src/core/nginx.h 
 
  1 
  2 /*
  3  * Copyright (C) Igor Sysoev
  4  * Copyright (C) Nginx, Inc.
  5  */
  6 
  7 
  8 #ifndef _NGINX_H_INCLUDED_
  9 #define _NGINX_H_INCLUDED_
 10 
 11 
 12 #define nginx_version      1006003
#修改版本號
 13 #define NGINX_VERSION      "1.6.3"
#修改軟件名
 14 #define NGINX_VER          "nginx/" NGINX_VERSION
#將nginx修改成想要修改的軟件名稱
 16 #define NGINX_VAR          "NGINX"
 17 #define NGX_OLDPID_EXT     ".oldbin"
 18 
 19 
 20 #endif /* _NGINX_H_INCLUDED_ */

2、更改系統默認用戶,直接修改用戶,nobody 或者編譯安裝時:直接指定用戶參數:nginx

指定用戶、組
./configure --prefix=/usr/local/nginx  --user=www --group=www
[root@blog ~]# grep "user" /usr/local/nginx/conf/nginx.conf.default 
#user  nobody;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
[root@blog ~]#

3、調整Nginx進程參數時,須要作性能測試,以及監控,當用戶訪問量、併發量等問題。vim

/usr/local/nginx/conf/nginx.conf
worker_processes  1;
使用命令查看
[root@blog ~]#  grep "processor" /proc/cpuinfo |wc -l
1
[root@blog ~]# 
根據服務器的配置進行計算

4、優化綁定不一樣的Nginx進程到不一樣CPU上,這個須要根據業務類型進行操做,此處不贅述,須要看業務來實施。緩存


5、調整Nginx單個進程容許的客戶端最大鏈接數安全


worker_connections  1024;
worker_connections的值要根據具體服務器性能和程序的內存使用量來指定(一個進程啓動使用的內存根據程序肯定)
events {
    worker_connections  20480;
}

6、Nginx最大鏈接數
Nginx worker進程的最大打開文件數,這個控制鏈接數的參數爲worker_rlimit_nofile。
worker_rlimit_nofile 65535服務器

7、開啓高效文件傳輸網絡

(1)設置參數:sendfile on;
   sendfile參數用於開啓文件的高效傳輸模式,同時將tcp_nopush和tcp_nodelay兩個指定設爲on,可防止網絡及磁盤I/O阻塞,提高Nginx工做效率。
官方說明:
syntax:    sendfile on|off  #參數語法
default:    sendfile off    #參數默認大小
context:    http,server,location,if in location #可放置的標籤段
(2)設置參數:tcp_nopush on;
Syntax: tcp_nopush on | off; #參數語法
Default: tcp_nopush off; #參數默認大小
Context: http, server, location #能夠放置標籤段
參數做用:激活或禁用Linux上的TCP_CORK socker選項,此選項僅僅開啓sendfile時才生效,激活這個tcp_nopush參數能夠運行把http response header和文件的開始放在一個文件裏發佈,減小網絡報文段的數量。
(3)設置參數:tcp_nodelay on;
用於激活tcp_nodelay功能,提升I/O性能
Syntax: tcp_nodelay on | off;
Default: tcp_nodelay on;
Context: http, server, location
參數做用:默認狀況下數據發送時,內核並不會立刻發送,可能會等待更多的字節組成一個數據包,這樣能夠提升I/O性能,可是,在每次只發送不多字節的業務場景,使用tcp_nodelay功能,等待時間會比較長。

8、Nginx超時設置:
4.Nginx鏈接超時的參數設置併發

(1)設置參數:keeplived_timeout 60;
用於設置客戶端鏈接保持會話的超時時間爲60秒。超過這個時間,服務器會關閉該鏈接,此數值爲參考值。
Syntax: keepalive_timeout timeout [header_timeout]; #參數語法
Default: keepalive_timeout 75s; #參數默認大小
Context: http, server, location #能夠放置的標籤段
參數做用:keep-alive可使客戶端到服務端已經創建的鏈接一直工做不退出,當服務器有持續請求時,keep-alive會使用正在創建的鏈接提供服務,從而避免服務器從新創建新鏈接處理請求。
(2)設置參數:client_header_timeout 15;
用於設置讀取客戶端請求頭數據的超時時間,此處的數值15單位是秒。
Syntax: client_header_timeout time;
Default: client_header_timeout 60s;
Context: http, server
參數做用:設置讀取客戶端請求頭數據的超時時間。若是超過這個時間,客戶端尚未發送完整的header數據,服務端將數據返回「Request time out (408)」錯誤。
(3)設置參數:client_body_timeout 15;
用於設置讀取客戶端請求主體的超時時間,默認值是60
Syntax: client_body_timeout time;
Default: client_body_timeout 60s;
Context: http, server, location
參數做用:設置讀取客戶端請求主體的超時時間。這個超時僅僅爲兩次成功的讀取操做之間的一個超時,非請求整個主體數據的超時時間,若是在這個超時時間內,客戶端沒有發送任何數據,Nginx將返回「Request time out(408)」錯誤,默認值是60.tcp

(4)設置參數:send_timeout 25;
用戶指定響應客戶端的超時時間。這個超時時間僅限於兩個連接活動之間的事件,若是超過這個時間,客戶端沒有任何活動,Nginx將會關閉鏈接,默認值爲60s,能夠改成參考值25s
Syntax: send_timeout time;
Default: send_timeout 60s;
Context: http, server, location
參數做用:設置服務器端傳送http響應信息到客戶端的超時時間,這個超時時間僅僅爲兩次成功握手後的一個超時,非請求整個響應數據的超時時間,如在這個超時時間內,客戶端沒有收到任何數據,鏈接將被關閉。ide

(九)PHP優化配置

化設置:

  1. http{}裏面

  2. fastcgi_connect_timeout 240;

  3. fastcgi_send_timeout 240;

  4. fastcgi_read_timeout 240;

  5. fastcgi_buffer_size 64k;

  6. fastcgi_buffers 4 64k;

  7. fastcgi_busy_buffers_size 128k;

  8. fastcgi_temp_file_write_size 128k;

  9. #fastcgi_temp_path /data/ngx_fcgi_tmp;  須要有路徑

  10. fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;

  11. PHP緩存 能夠配置在server標籤和http標籤

  12. fastcgi_cache ngx_fcgi_cache;

  13. fastcgi_cache_valid 200 302 1h;

  14. fastcgi_cache_valid 301 1d;

  15. fastcgi_cache_valid any 1m;

  16. fastcgi_cache_min_uses 1;

  17. fastcgi_cache_use_stale error timeout invalid_header http_500;

  18. fastcgi_cache_key http://$host$request_uri;

相關文章
相關標籤/搜索