#etnx運行的用戶和用戶組 user nginx nginx; #工做進程數,建議設置爲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 { #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,若是跑在FreeBSD上面,就用kqueue模型。 #use epoll; #單個進程最大鏈接數(最大鏈接數=鏈接數*進程數) worker_connections 1024; } #設定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.caitujun.com { #ip_hash指令,將同一用戶引入同一服務器。 ip_hash; server 192.168.100.110:4421 max_fails=3 weight=1; server 192.168.100.110:4422 max_fails=3 weight=2; server 192.168.100.110:4423 max_fails=3 weight=3; } #虛擬主機配置 server { #監聽端口 listen 80; #域名能夠有多個,用空格隔開 server_name www.caitujun.com caitujun.com; #反向代理配置, #將全部請求爲http://nginx.www.caitujun.com的請求所有轉發到upstream中定義的目標服務器中。 location / { #定義首頁索引文件的名稱 #index index.php index.html index.htm; #此處配置的域名必須與upstream的域名一致,才能轉發。 proxy_pass http://nginx.www.caitujun.com; #如下是一些反向代理的配置可刪除 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服務器傳 } #圖片緩存時間設置 location ~.+\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 10d; } #JS和CSS緩存時間設置 location ~ .+\.(js|css)$ { expires 1h; } #單獨的access_log文件 access_log logs/www.caitujun.com.access.log main; #設定查看Nginx狀態的地址 location ^~/NginxStatus{ stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file htpasswd;#htpasswd文件的內容能夠用apache提供的htpasswd工具來產生。 } #禁止訪問 .htxxx 文件 location ~ /\.ht { deny all; } #字符集 charset utf-8; #錯誤頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /root; } } }