nginx完整配置檔案例子
阿新 • • 發佈:2018-12-26
例一:
這是一個比較完整的nginx配置檔案示例,下面的nginx.conf簡單的實現nginx在前端做反向代理伺服器的例子,處理js、png等靜態檔案,jsp等動態請求轉發到其它伺服器tomcat,以及負載均衡的配置。
user www www; worker_processes 2; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 2048; } 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 logs/access.log main; sendfile on; # tcp_nopush on; keepalive_timeout 65; # gzip壓縮功能設定 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; # http_proxy 設定 client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 75; proxy_send_timeout 75; proxy_read_timeout 75; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2; # 設定負載均衡後臺伺服器列表 upstream backend { #ip_hash; server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ; server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ; } # 很重要的虛擬主機配置 server { listen 80; server_name itoatest.example.com; root /apps/oaapp; charset utf-8; access_log logs/host.access.log main; #對 / 所有做負載均衡+反向代理 location / { root /apps/oaapp; index index.jsp index.html index.htm; proxy_pass http://backend; 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; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } #靜態檔案,nginx自己處理,不去backend請求tomcat location ~* /download/ { root /apps/oa/fs; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /apps/oaapp; expires 7d; } location /nginx_status { stub_status on; access_log off; allow 192.168.10.0/24; deny all; } location ~ ^/(WEB-INF)/ { deny all; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ## 其它虛擬主機,server 指令開始 }
例二:
#執行使用者 user nobody; #啟動程序,通常設定成和cpu的數量相等 worker_processes 1; #全域性錯誤日誌及PID檔案 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工作模式及連線數上限 events { #epoll是多路複用IO(I/O Multiplexing)中的一種方式, #僅用於linux2.6以上核心,可以大大提高nginx的效能 use epoll; #單個後臺worker process程序的最大併發連結數 worker_connections 1024; # 併發總數是 worker_processes 和 worker_connections 的乘積 # 即 max_clients = worker_processes * worker_connections # 在設定了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什麼 # 為什麼上面反向代理要除以4,應該說是一個經驗值 # 根據以上條件,正常情況下的Nginx Server可以應付的最大連線數為:4 * 8000 = 32000 # worker_connections 值的設定跟實體記憶體大小有關 # 因為併發受IO約束,max_clients的值須小於系統可以開啟的最大檔案數 # 而系統可以開啟的最大檔案數和記憶體大小成正比,一般1GB記憶體的機器上可以開啟的檔案數大約是10萬左右 # 我們來看看360M記憶體的VPS可以開啟的檔案控制代碼數是多少: # $ cat /proc/sys/fs/file-max # 輸出 34336 # 32000 < 34336,即併發連線總數小於系統可以開啟的檔案控制代碼總數,這樣就在作業系統可以承受的範圍之內 # 所以,worker_connections 的值需根據 worker_processes 程序數目和系統可以開啟的最大檔案總數進行適當地進行設定 # 使得併發總數小於作業系統可以開啟的最大檔案數目 # 其實質也就是根據主機的物理CPU和記憶體進行配置 # 當然,理論上的併發總數可能會和實際有所偏差,因為主機還有其他的工作程序需要消耗系統資源。 # ulimit -SHn 65535 } http { #設定mime型別,型別由mime.type檔案定義 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 logs/access.log main; #sendfile 指令指定 nginx 是否呼叫 sendfile 函式(zero copy 方式)來輸出檔案, #對於普通應用,必須設為 on, #如果用來進行下載等應用磁碟IO重負載應用,可設定為 off, #以平衡磁碟與網路I/O處理速度,降低系統的uptime. sendfile on; #tcp_nopush on; #連線超時時間 #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #開啟gzip壓縮 gzip on; gzip_disable "MSIE [1-6]."; #設定請求緩衝 client_header_buffer_size 128k; large_client_header_buffers 4 128k; #設定虛擬主機配置 server { #偵聽80埠 listen 80; #定義使用 www.nginx.cn訪問 server_name www.nginx.cn; #定義伺服器的預設網站根目錄位置 root html; #設定本虛擬主機的訪問日誌 access_log logs/nginx.access.log main; #預設請求 location / { #定義首頁索引檔案的名稱 index index.php index.html index.htm; } # 定義錯誤提示頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { } #靜態檔案,nginx自己處理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { #過期30天,靜態檔案不怎麼更新,過期可以設大一點, #如果頻繁更新,則可以設定得小一點。 expires 30d; } #PHP 指令碼請求全部轉發到 FastCGI處理. 使用FastCGI預設配置. location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #禁止訪問 .htxxx 檔案 location ~ /.ht { deny all; } } }
例三:
user www www; #指定Nginx Worker程序執行使用者以及使用者組 worker_processes 2; #指定了Nginx要開啟的程序數,多核CPU指定和核數一樣多的程序數 pid logs/nginx.pid; #指定程序id的儲存檔案位置 worker_rlimit_nofile 65535; #指定單程序開啟檔案數,需與系統設定一致 events { use epoll; #指定nginx工作模式,nginx主要的工作模式有select、poll、kqueue、epoll 其中select、poll是標準工作模式,kqueue、epoll為高效工作模式,epoll用在Linux系統中,而kqueue用在BSD系統中 worker_connections 65535;#指定單程序的最大連線數 } HTTP部分 http { include mime.types; #指定配置檔案所包含的檔案 default_type application/octet-stream; #指定預設型別為二進位制流,也就是當檔案型別未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP檔案就會出現下載視窗 log_format main '$remote_addr - $remote_user [$time_local] "$request" '#設定日誌格式 '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';; client_max_body_size 20m; #設定允許客戶端請求的最大的單個檔案位元組數 client_header_buffer_size 16k;#指定來自客戶端請求頭的headerbuffer大小,如果自定義了訊息頭或有更大的cookie,可以在這裡增加緩衝大小 large_client_header_buffers 4 32k;#指定客戶端請求中較大的訊息頭的快取最大數量和大小,4為個數,32k為大小,最大快取為4個32kb sendfile on;#開啟高效傳輸模式 tcp_nopush on; # tcp_nopush,tcp_nodelay設定on,防止網路阻塞 tcp_nodelay on; keepalive_timeout 65; #指定客戶端連線保持活動的超時時間 client_header_timeout 10;#指定客戶端請求頭讀取超時時間,如果超過這個時間,客戶端還沒有傳送任何資料,Nginx將返回“Request time out(408)”錯誤 client_body_timeout 10;#指定客戶端請求主體讀取超時時間,如果超過這個時間���客戶端還沒有傳送任何資料,Nginx將返回“Request time out(408)”錯誤 send_timeout 10;#指定響應客戶端的超時時間。這個超時僅限於兩個連線活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連線 gzip on; #開啟gzip壓縮,實時壓縮輸出資料流 gzip_min_length 1k; #設定允許壓縮的頁面最小位元組數 gzip_buffers 4 16k; #指定記憶體空間來存貯壓縮結果,這裡指定4個單位為16k的記憶體來儲存壓縮結果,即總大小為64k gzip_http_version 1.1;#指定識別HTTP協議版本,預設是1.1 gzip_comp_level 2;#指定gzip壓縮比,1 壓縮比最小,處理速度最快;9 壓縮比最大,傳輸速度快,但處理最慢,也比較消耗CPU資源 gzip_types text/plain application/x-javascript text/css application/xml;#指定壓縮的型別,無論是否指定,“text/html”型別總是會被壓縮 gzip_vary on;#該選項開啟可以讓前端的快取伺服器快取經過gzip壓縮的頁面,例如,用Varnish快取經過Nginx壓縮的資料 server_tokens off;#隱藏Nginx版本號 server { listen 8000; #指定Nginx監埠 server_name localhost;#用來指定IP或者域名 charset utf-8;#指定Nginx預設的字符集,只有utf-8支援中文字元 access_log logs/host.access.log main;#指定訪問日誌的名稱及位置 location / { index index.html index.htm;#設定預設首頁 root /tom/webapps/ROOT;#指定網頁根目錄 } location ~ (jsp|\?) { #指定url中包含jsp或者?的全部轉發到192.168.0.10的80埠即tomcat處理 proxy_pass http://192.168.0.10:80; }
狀態監控模組: