Nginx伺服器配置檔案nginx.conf例項詳解
nginx配置檔案主要分為六個區域:
main(全域性設定)、events(nginx工作模式)、http(http設定)、
sever(主機設定)、location(URL匹配)、upstream(負載均衡伺服器設定)。
其中還有若干模組,如HttpGzip模組,stubstatus模組等等
結構類似如下:
main
events {
....
}
http {
....
upstream myproject {
.....
}
server {
....
location {
....
}
}
server {
....
location {
....
}
}
....
location {
....
}
....
location {
....
}
}
location /Nginx_status {
}
以下是結合具體例項對nginx.conf配置檔案的詳細解析
[root@localhostconf]# cat nginx.conf
############### 1、全域性配置 #################
#user nobody;
#主模組指令,指定nginx worker程式執行使用者及使用者組,預設為nobody賬號
User nobody nobody;
worker_processes 4;
#主模組指令,指定開啟程式數,每個nginx平均耗記憶體10~12MB,一般指定一個程式就足夠了,建議指定和CPU數目相同的程式數即可。
error_log logs/error.log notice;
#error_log logs/error.log info;
#error_log logs/error.log;
#error_log 主模組指令,定義全域性錯誤日誌檔案。輸出級別有debug,info,notice,warn,error,crit可供選擇,其中debug輸出日誌最詳細,二crit輸出日誌最少。
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
# worker_rlimit_nofile用於繫結worker程式和CPU,Linux核心2.4以上使用
events {
#event指令用來設定nginx的工作模式及連線數上限。
use epoll;
#use是個事件模組指令,用於指定工作模式,nginx支援的工作模式有select、poll、kqueue、epoll、rtsig、和/dev/poll,其中select和poll都是標準的工作模式。kqueue和epoll是高效的工作模式,其中kqueue用於BSD系統,而epoll用於Linux系統,對於Linux系統,epoll是首選。
worker_connections 65536;
# worker_connections時間模組指令,用於定義程式的最大連線數,預設為1024,。
#最大客戶連線數由worker_connections和worker_processes決定,即max_client=worker_processes*worker_connections,在作為反向代理時變為:max_client= worker_processes*worker_connections/4。
#程式的最大連線數受Linux系統程式的最大開啟檔案數限制,在執行作業系統命令“ulimit –n 65536”後worker_connections的設定才生效。
}
################ 2、HttpGzip模組配置 ##################
gzip on;
#gzip on : 開啟實時gzip壓縮輸出資料流,減少網路傳輸
gzip_min_length 1k;
##gzip_min_length設定允許壓縮的頁面最小位元組數,頁面位元組數從header頭的content-length中進行獲取。預設值是0,不管頁面大小都進行壓縮。建議設定成大於1k的位元組數,小於1k可能會越壓越大。
gzip_buffers 4 16k;
#gzip_buffers設定系統獲取幾個單位的快取用於儲存gzip的壓縮結果資料流。4 16k代表申請4個單位為16K的記憶體作為壓縮結果六快取
gzip_http_version 1.1;
#gzip_http_version用於識別 http 協議的版本,預設是1.1,目前絕大多數瀏覽器已經支援gzip解壓。
gzip_comp_level 6;
#gzip_comp_level:gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)
gzip_types text/html text/plaintext/css text/javascript application/json application/javascriptapplication/x-javascript application/xml;
#gzip_types指定何種型別進行壓縮,無論是否指定,”text/html”型別總是會被壓縮的。
gzip_vary on;
#gzip_vary:和http頭有關係,會在響應頭加個 Vary: Accept-Encoding ,可以讓前端的快取伺服器快取經過gzip壓縮的頁面,例如,用Squid快取經過Nginx壓縮的資料。。
################## 3.http伺服器配置 ###############
http {
include mime.types;
#include是個主模組指令,實現對配置檔案所包含的檔案的設定,可以減少主配置檔案的複雜度。
default_type application/octet-stream;
#default_type屬於http核心模組指令,預設為二進位制流,也就是當檔案型別未定義時使用這種方式,例如在沒有配置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"';
#log_format download'$remote_addr - $remote_user [$time_local] "$request"
'$status$body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#log_format是nginx的httplog模組指令,用於指定nginx的日誌輸出格式,main為此日誌出出個事的名稱,可以線上面access_log指令中使用。
#access_log logs/access.log main;
client_max_body_size 20m;
#設定允許客戶端請求的最大單個檔案位元組數
client_header_buffer_size 32k;
#用於指定客戶端請求頭的headerbuffer大小,對於大多數請求,1kb的緩衝區大小已經足夠,如果定義了訊息頭或有更大的cookie,可以增加緩衝區大小。
large_client_header_buffers 4 32k;
#用於指定客戶端請求中較大的訊息頭的快取最大數量和大小
sendfile on;
#sendfile用於開啟高效檔案傳輸模式,將tcp_nopush和tcp_nodely另個指令設定為on,用於防止網路阻塞。
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
#keepalive_timeout 0;
#keepalive_timeout用於設定客戶端連續保持活動的超時時間。
client_header_timeout 10;
#client_header_timeout用於設定客戶端請求頭讀取超時時間,超過該時間客戶端還沒傳送任何資料,nginx將返回“request time out(408)”錯誤。
client_body_timeout 10;
#client_body_timeout用於設定客戶端請求主體讀取超時時間,預設時間為602s,超過該時間客戶端還沒傳送任何資料,nginx將返回“request timeout(408)”錯誤。
send_timeout 10;
#send_timeout 用於指定響應客戶端的超時時間,這個超時僅限於兩個連線活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx將會關閉連線。
################ 4、負載均衡配置 (例項)##################
####upstream是nginx的http upstream模組,這個模組通過一個簡單的排程演算法來實現客戶端IP到後端伺服器的負載均衡。
upstream myserver {
# upstream example.com;指定一個負載均衡器的名稱為example.com;。該名稱為任意##的,使用時呼叫即可。
ip_hash;
##ip_hash排程演算法,每個請求按IP的hash結果分配,是來自同一個IP的訪客##固定訪問一個後端伺服器,有效解決了動態伺服器存在的session共享問題
server 192.168.56.102:8088
###server:該指令指定後端伺服器的IP地址和埠,同時還可以指定每個後端##伺服器在負載均衡排程中的狀態,常見的狀態有:down,backup,max_fails,##fail_timeout。
#backup:預留的備份機器,當其他所有的非backup機器出現故障或正在忙時,##才會請求backup機器,該機器壓力最輕。當排程演算法為ip_hash,狀態不能##為backup和weight;
server 192.168.56.101:8088 down;
#down:表示當前server暫時不參與負載均衡
server 192.168.56.103:8088 max_fails=3 fail_timeout=20s;
server 192.168.56.105:8088max_fails=3 fail_timeout=20s;
#max_fails:允許請求失敗的次數,預設為1。當超過最大次數時,返回
#proxy_next_upstream模組定義錯誤。
#fail_timeout:經歷max_fails次失敗後,暫停服務的時間。
server 192.168.56.104:8088;
}
server {
listen 8088;
server_name www.example.com 192.168.56.110;
#指定IP地址或者域名,多個域名之間用空格隔開。
index index.html index.htm index.jsp;
#設定訪問的預設首頁地址
root /web/wwwroot/www;
#指定主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑
#對 / 所有做負載均衡+反向代理
location / {
proxy_pass http://myserver;
#proxy_pass http://myserver:實現負載排程功能,proxy_pass指令用來指定請求轉向代理的後端伺服器定義的伺服器列表,即反向代理,對應upstream負載均衡器。地址也可以是主機名或者IP地址,如:proxy_passhttp://ip:port。
proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
#proxy_next_upstream:定義故障轉移策略,當後端伺服器節點返回500、502、503、504和執行超時等錯誤時,自動將請求轉發到upstream負載均衡組中的另一臺伺服器,實現故障轉移。
############# 5.http_proxy設定##################
####該部分亦可以使用寫進proxy.conf檔案中,再使用include指令包含進來,######從而使配置顯得更簡練
######用法:include /opt/nginx/conf/proxy.conf ####
client_max_body_size 10m;
client_body_buffer_size 128k;
#client_body_buffer_size:用於指定客戶端請求主體緩衝區大小,意思就是先儲存到本地再傳給使用者。
proxy_connect_timeout 75;
#nginx跟後端伺服器連線超時時間(代理連線超時)
#連線成功後,與後端伺服器兩個成功的響應操作之間超時時間(代理接收超時)
proxy_send_timeout 75;
#proxy_send_timeout:後端伺服器的資料回傳時間,超時則斷開連線
proxy_read_timeout 75;
#proxy_read_timeout:設定nginx從代課的後端伺服器獲取資訊的時間,即在規定時間之內後端伺服器必須傳完所有的資料,否則斷開連線。
proxy_buffer_size 4k;
#設定代理伺服器(nginx)從後端伺服器讀取並儲存使用者頭資訊的緩衝區大小,預設與proxy_buffers大小相同,其實可以將這個指令值設的小一點
proxy_buffers 4 32k;
#proxy_buffers緩衝區,nginx針對單個連線快取來自後端realserver的響應,網頁平均在32k以下的話,這樣設定
proxy_busy_buffers_size 64k;
#高負荷下緩衝大小(官方建議為proxy_buffers*2)
proxy_temp_file_write_size 64k;
#指定proxy快取臨時檔案的大小
proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
#當快取被代理的伺服器響應到臨時檔案時,這個選項限制每次寫臨時檔案的大小。proxy_temp_path(可以在編譯的時候)指定寫到哪那個目錄。
proxy_redirect off;
# 後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP
proxy_set_header Host $host;
#proxy_set_header:設定由後端伺服器獲取使用者主機或真實IP地址,以及代理者的真實IP
proxy_set_header X-Real-IP $remote_addr;
#
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#
}
}
############## 6、server虛擬主機配置 (例項) ################
server {
listen 80;
#指定虛擬主機的伺服器
server_name www.example.com;
# server_name 192.168.56.111;
#指定IP地址或者域名,多個域名之間用空格隔開。
access_log logs/ example.access.log main;
#access_log用於指定此虛擬主機的訪問日誌存放路徑,main用於指定訪問日誌的輸出格式。
location / {
index index.html index.htm index.jsp;
#設定訪問的預設首頁地址
root /web/wwwroot/example/vhost
#指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑
charset utf-8;
#設定網頁預設的編碼格式
}
}
server {
listen 80;
#指定虛擬主機的伺服器
server_name www.example1.com;
# server_name 192.168.56.112;
#指定IP地址或者域名,多個域名之間用空格隔開。
access_log logs/ example1.access.log main;
#access_log用於指定此虛擬主機的訪問日誌存放路徑,main用於指定訪問日誌的輸出格式。
location / {
index index.html index.htm index.jsp;
#設定訪問的預設首頁地址
root /web/wwwroot/example1/vhost
#指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑
charset utf-8;
#設定網頁預設的編碼格式
}
}
Include /opt/nginx/conf/vhost/ www.example2.com.conf ;
}}
###此處用到include指令,其中/opt/nginx/conf/vhost/ www.example2.com.conf
##內容為:
server {
listen 80;
server_name www.example2.com;
# server_name 192.168.56.113;
access_log logs/ example1.access.log main;
location / {
index index.html index.htm index.jsp;
root /web/wwwroot/example2/vhost
charset utf-8;
}
}
########## 7、URL配置設定 ##################
###location支援正規表示式和條件判斷匹配,可以通過location指令實現nginx對動靜態網頁的過濾處理。
location ~ * \.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
#所有副檔名為gif|jpg|jpeg|bmp|png|ico|txt|js|css的靜態檔案都交給nginx處理
{
root /web/wwwroot/html;
expires 30d;
#expires指定靜態檔案的過期時間
}
location ~^/(upload|html)/
#將upload和html下的所有檔案都交給nginx來處理,當然upload和html目錄包含在/web/wwwroot/html目錄中
{
root /web/wwwroot/html; expires 30d;
}
location ~ .*.jsp$
#location對此虛擬機器下動態網頁的過濾處理,也就是將所有.jsp為字尾的檔案都交給本機8080埠處理。
{
Index index.jsp;
Proxy_pass http://localhost:8080;
}
##### ####### 8、stubstatus模組配置###############
location /Nginx_status {
stub_status on;
#啟用stub_status的工作狀態統計功能
access_log log/NginxStatus.log;
# access_log用來指定stub_status模組的訪問日誌檔案
auth_basic “NginxStatus”;
#auth_basic是nginx的一種認證機制
auth_basic_user_file ../htpasswd;
#auth_basic_user_file用來指定認證的密碼檔案
#nginx的auth_basic採用的是與Apache相容的密碼檔案,所以需要採用
#Apache的htpasswd命令來生成密碼檔案
#如新增一個fieldyang 使用者可以用該方式生成密碼檔案
#/usr/local/apache/bin/htpasswd –c /opt/nginx/conf/htpasswd fieldyang
#要檢視nginx執行狀態,只需在http://ip/NginxStatus輸入賬號密碼即可
# # allow 192.168.10.0/24;
# # allow 192.168.56.100;
# # deny all;
}
############ 9、虛擬主機錯誤資訊返回頁面 #################
error_page 404 /404.html;
#error_page指令可以定製各種錯誤資訊返回頁面,nginx會在主目錄的html目
#錄中查詢指定的返回頁面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
相關文章
- Nginx 配置檔案 nginx.conf 詳解Nginx
- nginx.conf 配置檔案詳解Nginx
- Nginx 配置檔案 nginx.conf 中文詳解Nginx
- /etc/nginx/nginx.conf配置檔案詳解Nginx
- Nginx配置檔案nginx.conf中文詳解Nginx
- 附:Nginx配置檔案nginx.conf中文詳解Nginx
- Nginx配置檔案nginx.conf中文詳解(轉)Nginx
- Nginx配置檔案nginx.conf中文詳解(總結)Nginx
- Nginx 伺服器主配置檔案詳解Nginx伺服器
- nginx配置檔案詳解Nginx
- [轉]Nginx 配置檔案nginx.conf的完整配置說明Nginx
- Nginx 中 nginx.conf 詳解Nginx
- nginx伺服器安裝及配置檔案詳解Nginx伺服器
- Nginx 伺服器安裝及配置檔案詳解Nginx伺服器
- Nginx的配置檔案詳解Nginx
- Nginx基礎02:配置檔案nginx.conf(Part1)Nginx
- Nginx的nginx.conf配置檔案中文註釋說明Nginx
- Nginx 配置檔案引數詳解Nginx
- Mysql配置檔案my.ini配置項詳解MySql
- 詳解nginx伺服器的nginx.conf 中 root目錄設定問題Nginx伺服器
- Nginx目錄結構與配置檔案詳解Nginx
- Nginx配置檔案詳解與優化建議Nginx優化
- Nginx配置檔案詳細說明Nginx
- 詳解Nginx如何配置Web伺服器NginxWeb伺服器
- Nginx配置檔案(反向代理伺服器)Nginx伺服器
- Nagios伺服器端配置檔案詳解(2)iOS伺服器
- Docker容器配置Nginx例項分享DockerNginx
- Linux與windows檔案傳輸詳解及例項LinuxWindows
- nginx配置詳解Nginx
- nginx.conf的完整配置說明Nginx
- Nginx實用指南V1(連載之二:Nginx配置檔案詳解)Nginx
- redis 配置檔案詳解Redis
- haproxy配置檔案詳解
- redis配置檔案詳解Redis
- SSH配置檔案詳解
- zookeeper配置檔案詳解
- WCF配置檔案詳解
- nginx配置檔案Nginx