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優化配置
化設置:
在http{}裏面
fastcgi_connect_timeout 240;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#fastcgi_temp_path /data/ngx_fcgi_tmp; 須要有路徑
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
PHP緩存 能夠配置在server標籤和http標籤
fastcgi_cache ngx_fcgi_cache;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key http://$host$request_uri;