#工作進程數,建議設置為CPU的總核數
worker_processes 16;
#全局錯誤日志定義類型,日志等級從低到高依次為:
#debug | info | notice | warn | error | crit
error_log logs/error.log info;
#記錄主進程ID的文件
pid /nginx-1.13.7/nginx.pid;
#一個進程能打開的文件描述符最大值,理論上該值因該是最多能打開的文件數除以進程數。
#但是由於nginx負載並不是完全均衡的,所以這個值最好等於最多能打開的文件數。
#LINUX系統可以執行 sysctl -a | grep fs.file 可以看到linux文件描述符。
worker_rlimit_nofile 65535;
#連接數上限,單個進程允許的最大連接數
events {
worker_connections 65535;
}
#設定http服務器,利用它的反向代理功能提供負載均衡支持
http {
#文件擴展名與文件類型映射表
include mime.types;
#默認文件類型
default_type application/octet-stream;
#日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access log 記錄了哪些用戶,哪些頁面以及用戶瀏覽器、ip和其他的訪問信息
access_log logs/access.log main;
#服務器名字的hash表大小
server_names_hash_bucket_size 128;
#客戶端請求頭緩沖大小。
#nginx默認會用client_header_buffer_size這個buffer來讀取header值,
#如果header過大,它會使用large_client_header_buffers來讀取。
#如果設置過小HTTP頭/Cookie過大 會報400 錯誤 nginx 400 bad request
#如果超過buffer,就會報HTTP 414錯誤(URI Too Long)
#nginx接受最長的HTTP頭部大小必須比其中一個buffer大
#否則就會報400的HTTP錯誤(Bad Request)
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
#客戶端請求體的大小
client_body_buffer_size 8m;
#隱藏ngnix版本號
server_tokens off;
#忽略不合法的請求頭
ignore_invalid_headers on;
#指定啟用除第一條error_page指令以外其他的error_page。
recursive_error_pages on;
#讓 nginx 在處理自己內部重定向時不默認使用 server_name 設置中的第一個域名
server_name_in_redirect off;
#開啟文件傳輸,一般應用都應設置為on;若是有下載的應用,則可以設置成off來平衡網絡I/O和磁盤的I/O來降低系統負載
sendfile on;
#告訴nginx在一個數據包里發送所有頭文件,而不一個接一個的發送。
tcp_nopush on;
#告訴nginx不要緩存數據,而是一段一段的發送--當需要及時發送數據時,就應該給應用設置這個屬性,
#這樣發送一小塊數據信息時就不能立即得到返回值。
tcp_nodelay on;
#長連接超時時間,單位是秒
keepalive_timeout 65;
#gzip模塊設置,使用 gzip 壓縮可以降低網站帶寬消耗,同時提升訪問速度。
gzip on; #開啟gzip
gzip_min_length 1k; #最小壓縮大小
gzip_buffers 4 16k; #壓縮緩沖區
gzip_http_version 1.0; #壓縮版本
gzip_comp_level 2; #壓縮等級
gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss; #壓縮類型
#upstream作負載均衡,在此配置需要輪詢的服務器地址和端口號
#max_fails為允許請求失敗的次數,默認為1.
#weight為輪詢權重,根據不同的權重分配可以用來平衡服務器的訪問率。
#指定要域名對應的WEB項目訪問地址
upstream nginx.www.test.cn {
server localhost:3000 max_fails=3 weight=1;
}
#主機配置
server {
#監聽端口
listen 90;
#自己指定要跳轉的域名
server_name 192.168.1.19;
#反向代理配置,
#將所有請求為http://nginx.www.test.cn的請求全部轉發到upstream中定義的目標服務器中。
location / {
#定義首頁索引文件的名稱
#index index.php index.html index.htm;
#此處配置的域名必須與upstream的域名一致,才能轉發。
proxy_pass http://nginx.www.test.cn;
#以下是一些反向代理的配置可刪除
proxy_redirect off;
#后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#client_max_body_size 10m; #允許客戶端請求的最大單文件字節數
#client_body_buffer_size 128k; #緩沖區代理緩沖用戶端請求的最大字節數
#proxy_connect_timeout 300; #nginx跟后端服務器連接超時時間(代理連接超時)
#proxy_send_timeout 300; #后端服務器數據回傳時間(代理發送超時)
#proxy_read_timeout 300; #連接成功后,后端服務器響應時間(代理接收超時)
#proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
#proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
#proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)
#proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
}
#單獨的access_log文件
access_log logs/192.168.1.19.access.log main;
#設定查看Nginx狀態的地址
location /NginxStatus{
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file htpasswd;
}
#禁止訪問 .htxxx 文件
location ~ /\.ht {
deny all;
}
#字符集
charset utf-8;
#錯誤頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
}
}