<?xml version="1.0" encoding="UTF-8" ?> <service> <id>nginx</id> <name>Nginx Service</name> <description>High Performance Nginx Service</description> <executable>C:\nginx-1.10.2\nginx.exe</executable> <logpath>C:\nginx-1.10.2\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p C:\nginx-1.10.2</startargument> <stopargument>-p C:\nginx-1.10.2 -s stop</stopargument> </service>
start nginx;//windows nginx;//linux
nginx -s stop; nginx -s quit;
nginx -s reload;
nginx -t;
user nobody;
worker_processes 1;
error_log logs/error.log info;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events { #use epoll; worker_connections 1024; }
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } 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 0; keepalive_timeout 65; #gzip on; #配置tomcat的IP地址和訪問端口 upstream gw { server 192.168.37.136:8080 weight=1; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #Nginx代理配置 location /lywh { proxy_pass http://gw/lywh; } location /sapi { proxy_pass http://gw/shopappapi; } location /cas{ proxy_pass http://gw/cas-server-webapp-4.0.0/login; } location /doc{ proxy_pass http://gw/docs; } #定義全局404頁面 #error_page 404 html/404.html; #定義50x錯誤頁面 error_page 500 502 503 504 html/50x.html; location = /50x.html { root html; } } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
http{ include conf/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $bytes_sent ''"$http_referer" "$http_user_agent" ''"$gzip_ratio"'; log_format download '$remote_addr - $remote_user [$time_local] ''"$request" $status $bytes_sent ''"$http_referer" "$http_user_agent" ''"$http_range" "$sent_http_content_range"'; client_max_body_size 20m; client_header_buffer_size 32K; large_client_header_buffers 4 32k; Sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; client_header_timeout 10; client_body_timeout 10; send_timeout 10; }
#user nobody; worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; log_format main 'IP地址:$remote_addr,主機名:$server_name,協議:$request,狀態:$status'; access_log logs/access.log main; server { listen 80; server_name jay.tohours.com; location /a/b{ alias C:/nginx-test/; index index3.txt; } location /a{ alias C:/nginx-test/; index index1.txt; } location /b{ alias C:/nginx-test/; index index2.txt; } location /{ root html; index index.html; } location /fhc { proxy_pass http://127.0.0.1:11080; proxy_redirect off; 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; proxy_max_temp_file_size 0; proxy_connect_timeout 1800; proxy_send_timeout 1800; proxy_read_timeout 1800; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; client_max_body_size 100m; } } }
語法:proxy_buffer_size size; 默認值:proxy_buffer_size 4k|8k; 上下文:http,server,location 設置緩衝區的大小的size,nginx從被代理的服務器讀取響應時,使用該緩衝區保存響應的開始部分, 這部分一般包含着一個小小的響應頭。該緩衝區大小默認等於proxy_buffers指令設置的一塊緩衝區 的大小,但它也能夠被設置得更小。
語法:proxy_buffering on|off; 默認值:proxy_buffering on; 上下文:http,server,location 代理的時候,開啓或者關閉緩衝後端服務器的響應。 當開啓緩衝時,nginx儘量快的從被代理的服務器接收響應,再將它存入proxy_buffer_size和proxy_buffers指令設置的緩衝 區中。若是響應沒法整個歸入內存,那麼其中一部分將存入磁盤上的臨時文件,proxy_max_temp_file_size和proxy_temp_file_write_size 指令能夠控制臨時文件的寫入。 當關閉緩衝時,收到響應後,nginx當即將其同步傳給客戶端。nginx不會嘗試從被代理的服務器讀取整個請求,而是將proxy_buffer_size 指令設定的大小做爲一次讀取的最大長度。 響應頭「X-Accel-Buffering」傳遞「yes」或「no」能夠動態的開啓或者關閉代理的緩衝功能,這個功能能夠經過proxy_ignore_headers指令關閉。
語法:proxy_buffers number size 默認值:proxy_buffers 8 4k|8k; 上下文:http,server,location 爲每一個鏈接設置緩衝區的數量爲number,每塊緩衝區的大小爲size,這些緩衝區用於保存從被代理的服務器讀取的響應。 每塊緩衝區默認等於一個內存頁的大小,這個值是4k仍是8k,取決於平臺。
語法:proxy_busy_buffers_size size; 默認值:proxy_busy_buffers_size 8k|16k; 上下文:http,server,location 當開啓緩衝響應的功能之後,在沒有讀取到所有響應的狀況下,寫緩衝到達必定大小時,nginx必定會向客戶端發送響應,直到 緩衝小於此值。這條指令用來設置此值。同時,剩餘的緩衝區能夠用於接收響應,若是須要,一部份內容將緩衝到臨時文件。該大小 默認是proxy_buffer_size和proxy_buffers指令設置單塊緩衝大小的兩倍。
語法:proxy_cache zone|off; 默認值:proxy_cache off; 上下文:http,server,location; 指定用於頁面緩存的共享,同一塊共享內存能夠在多個地方使用,off參數能夠屏蔽從上層配置繼承的緩存功能。
語法:proxy_cache_bypass string ...; 默認值:—— 上下文:http,server,location 定義nginx不從緩存取響應的條件,若是至少一個字符串條件非空並且非「0」,nginx就不會從緩存中去取響應。 proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment; proxy_cache_bypass $http_pragma $http_authorization; 本指令能夠與proxy_no_cache一塊兒使用。
語法:proxy_cache_key String; 默認值:proxy_cache_key $scheme $proxy_host $request_uri; 上下文:http,server,location 定義如何生成緩存的鍵,好比: proxy_cache_key "$host$request_uri$cookie_user"; 這條指令的默認值相似於下面的字符串: proxy_cache_key $scheme$proxy_host$uri$is_args$args;
語法:proxy_cache_lock on|off; 默認值:proxy_cache_lock off; 上下文:http,server,location; 該指令出如今版本1.1.12,開啓此功能時,對於一樣的請求,同時只容許一個請求發日後端,並根據proxy_cache_key指令的設置 在緩存中植入一個新條目,其餘請求相同條目的請求將一直等待,直到緩存中出現相應的內容,或者鎖在proxy_cache_lock_timeout 指令設置的超時後被釋放。
語法:proxy_cache_lock_timeout time; 默認值:proxy_cache_lock_timeout 5s; 上下文:http,server,location; 該指令出如今1.1.12版本,爲proxy_cache_lock指令設置鎖的超時。
語法:proxy_cache_min_uses number; 默認值:proxy_cache_min_uses 1; 上下文:http,server,location; 設置響應被緩存的最小請求次數。
語法:proxy_cache_path path[levels=levels]keys_zone=name:size[inactive=time][max_size=size][loader_files=number][loader_sleep=time][loader_threshold=time]; 默認值:—— 上下文:http; 設置緩存的路徑和其餘參數,緩存數據是保存在文件中的,緩存的鍵和文件名都是在代理URL上執行MD5的結果。levels參數定義了 緩存的層次結構,好比,下面配置: proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; 緩存中文件名看起來是這樣的: /data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c 被緩存的響應首先寫入一個臨時文件,而後進行重命名,從0.8.9版本開始,臨時文件和緩存能夠放在不一樣的文件系統,但請注意,這將 致使文件在這兩個文件系統中進行拷貝,而不是廉價的重命名操做。所以,針對任何路徑,都建議將緩存和proxy_temp_path指令設置 的臨時文件目錄放在同一文件系統。 此外,全部活動的鍵和緩存數據相關的信息都被存放在共享內存中,共享內存經過keys_zone參數的name和size來定義,被緩存的數據 若是在inactive參數指定的時間內未被訪問,就會被從緩存中移除,不論它是不是剛產生的,inactive的默認值是10分鐘。 特殊進程「cache manager」監控緩存的條目數量,若是超過max_size參數設置的最大值,使用LRU算法移除緩存數據。 nginx新啓動後不久,特殊進程「cacha loader」就被啓動,該進程將文件系統上保存的過去緩存的數據的相關信息從新加載到共享內存。 加載過程分屢次迭代完成,每次迭代,進程只加載很少於loader_files參數指定的文件數量(默認值爲100)。此外,每次迭代過程的 持續時間不能超過loader_threshold參數的值(默認200毫秒),每次迭代之間,nginx的暫停時間由loader_sleep參數指定(默認50毫秒)。
語法:proxy_cache_use_stale error|timeout|invalid_header|updating|http_500|http_502|http_503|http_504|http_404|off ...; 默認值:proxy_cache_use_stale off; 上下文:http,server,location; 若是後端服務器出現狀況,nginx是可使用過時的響應緩存的,這條指令就是定義何種條件下容許開啓此機制,這條指令的參數與 proxy_next_upstream指令的參數相同。 此外,updating參數容許nginx在正在更新緩存的狀況下使用過時的緩存做爲響應,這樣作可使更新緩存數據時,訪問源服務器的次數 更少。在植入新的緩存條目時,若是想使訪問源服務器的次數最少,可使用proxy_cache_lock指令。
語法:proxy_cache_valid[code ...]time; 默認值:—— 上下文:http,server,location; 爲不一樣的響應狀態碼設置不一樣的緩存時間,好比下面指令: proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 設置狀態碼爲200和302的響應的緩存時間爲10分鐘,狀態碼爲404的響應的緩存時間爲1分鐘。 若是僅僅指定了time,以下面指令: proxy_cache_valid 5m; 那麼只有狀態碼爲200,300和302的響應會被緩存。 若是使用any參數,那麼就能夠緩存任何響應: proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m; 緩存參數也能夠直接在響應頭中設定,這種方式的優先級高於使用這條指令設置緩存時間,「X-Accel-Expires」響應頭能夠以秒爲 單位設置響應的緩存時間,若是值爲0,表示禁止緩存響應,若是值以@開始,表示自1970年1月1日以來的秒數,響應一直會被緩存到 這個絕對時間點,若是不含「X-Accel-Expires」響應頭,緩存參數仍可能被「Expires」或者「Cache-Control」響應頭設置,若是 響應頭含有「Set-Cookie」,響應將不能被緩存,這些頭的處理過程可使用指令proxy_ignore_headers忽略。
語法:proxy_connect_timeout time; 默認值:proxy_connect_timeout 60s; 上下文:http,server,location; 設置與後端服務器創建鏈接的超時時間,應該注意這個超時通常不可能大於75秒。
語法: proxy_cookie_domain off; proxy_cookie_domain domain replacement; 默認值: proxy_cookie_domain off; 上下文:http,server,location; 這個指令出如今版本1.1.15,設置「Set-Cookie」響應頭的domain屬性的替換文本,假設後端服務器返回的「Set-Cookie」響應頭 含有屬性「domain=localhost」,那麼指令, proxy_cookie_domain localhost example.org; 將這個屬性改寫成:「domain=example.org」 domain和replacement配置字符串,以及domain屬性中起始的點將被忽略,匹配過程大小寫不敏感。 domain和replacement配置字符串中能夠包含變量: proxy_cookie_domain www.$host $host; 這條指令一樣可使用正則表達式,這時,domain應以「~」標誌開始,且可使用命名匹配和位置匹配組,而replacement能夠引用 這些匹配組: proxy_cookie_domain ~\.(?P<sl_domain>[-0-9a-z]+\.[a-z]+)$ $sl_domain; 能夠同時定義多條proxy_cookie_domain指令: proxy_cookie_domain localhost example.org; proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $1; off參數能夠取消當前配置級別的全部的proxy_cookie_domain指令。 proxy_cookie_domain off; proxy_cookie_domain localhost example.org; proxy_cookie_domain www.example.org example.org;
語法: proxy_cookie_path off; proxy_cookie_path replacement; 默認值: proxy_cookie_path off; 上下文:http,server,location; 這個指令出如今版本1.1.15,設置「Set-Cookie」響應頭中的path屬性的替換文本,假設後端服務器返回的「Set-Cookie」響應頭 含有屬性「path=/two/some/uri/」,那麼指令: proxy_cookie_path /two/ /; 將這個屬性改寫爲 「path=/some/uri/」 path和replacement配置字符串能夠包含變量: proxy_cookie_path $uri /some$uri; 這條指令一樣可使用正則表達式。若是使用大小寫敏感的匹配,path應以「~」標誌開始,若是使用大小寫不敏感的匹配,path應以「~*」標誌開始。path可使用命名匹配組和位置匹配組,replacement能夠引用這些匹配組: proxy_cookie_path ~*^/user/([^/]+) /u/$1; 能夠同時定義多條proxy_cookie_path指令: proxy_cookie_path /one/ /; proxy_cookie_path / /two/; off參數能夠取消當前配置級別的全部proxy_cookie_path指令: proxy_cookie_path off; proxy_cookie_path /two/ /; proxy_cookie_path ~*^/user/([^/]+) /u/$1;
語法:proxy_hide_header field; 默認值:—— 上下文:http,server,location; nginx默認不會將「Date」、「Server」、「X-Pad」,和「X-Accel-…」響應頭髮送給客戶端。 proxy_hide_header指令則能夠設置額外的響應頭,這些響應頭也不會發送給客戶端。 相反的,若是但願容許傳遞某些響應頭給客戶端,可使用proxy_pass_header指令。
語法:proxy_http_version 1.0|1.1; 默認值:proxy_http_version 1.0; 上下文:http,server,location; 這個指令出如今版本 1.1.4. 設置代理使用的HTTP協議版本。默認使用的版本是1.0,而1.1版本則推薦在使用keepalive鏈接時一塊兒使用。
語法:proxy_ignore_client_abort on|off; 默認值:proxy_ignore_client_abort off; 上下文:http,server,location; 決定當客戶端在響應傳輸完成前就關閉鏈接時,nginx是否應關閉後端鏈接。
語法:proxy_ignore_headers field; 默認值:—— 上下文:http,server,location; 不處理後端服務器返回的指定響應頭。下面的響應頭能夠被設置: 「X-Accel-Redirect」,「X-Accel-Expires」, 「X-Accel-Limit-Rate」 (1.1.6),「X-Accel-Buffering」 (1.1.6), 「X-Accel-Charset」 (1.1.6), 「Expires」,「Cache-Control」,和「Set-Cookie」 (0.8.44)。 若是不被取消,這些頭部的處理可能產生下面結果: 「X-Accel-Expires」,「Expires」,「Cache-Control」,和「Set-Cookie」 設置響應緩存的參數; 「X-Accel-Redirect」執行到指定URI的內部跳轉; 「X-Accel-Limit-Rate」設置響應到客戶端的傳輸速率限制; 「X-Accel-Buffering」啓動或者關閉響應緩衝; 「X-Accel-Charset」設置響應所需的字符集。
語法: proxy_intercept_errors on|off; 默認值: proxy_intercept_errors off; 上下文: http, server, location; 當後端服務器的響應狀態碼大於等於400時,決定是否直接將響應發送給客戶端,亦或將響應轉發給nginx由error_page指令來處理。
語法: proxy_max_temp_file_size size; 默認值: proxy_max_temp_file_size 1024m; 上下文: http, server, location; 打開響應緩衝之後,若是整個響應不能存放在proxy_buffer_size和proxy_buffers指令設置的緩衝區內, 部分響應能夠存放在臨時文件中。 這條指令能夠設置臨時文件的最大容量。而每次寫入臨時文件的數據量則 由proxy_temp_file_write_size指令定義。 將此值設置爲0將禁止響應寫入臨時文件。
語法: proxy_next_upstream error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off …; 默認值: proxy_next_upstream error timeout; 上下文: http, server, location 指定在何種狀況下一個失敗的請求應該被髮送到下一臺後端服務器: error 和後端服務器創建鏈接時,或者向後端服務器發送請求時,或者從後端服務器接收響應頭時,出現錯誤; timeout 和後端服務器創建鏈接時,或者向後端服務器發送請求時,或者從後端服務器接收響應頭時,出現超時; invalid_header 後端服務器返回空響應或者非法響應頭; http_500 後端服務器返回的響應狀態碼爲500; http_502 後端服務器返回的響應狀態碼爲502; http_503 後端服務器返回的響應狀態碼爲503; http_504 後端服務器返回的響應狀態碼爲504; http_404 後端服務器返回的響應狀態碼爲404; off 中止將請求發送給下一臺後端服務器。 須要理解一點的是,只有在沒有向客戶端發送任何數據之前,將請求轉給下一臺後端服務器纔是可行的。也就是說,若是在 傳輸響應到客戶端時出現錯誤或者超時,這類錯誤是不可能恢復的。
語法: proxy_no_cache string …; 默認值: — 上下文: http, server, location; 定義nginx不將響應寫入緩存的條件。若是至少一個字符串條件非空並且非「0」,nginx就不將響應存入緩存: proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; proxy_no_cache $http_pragma $http_authorization; 這條指令能夠和proxy_cache_bypass指令一塊兒使用。
語法: proxy_pass URL; 默認值: — 上下文: location, if in location, limit_except; 設置後端服務器的協議和地址,還能夠設置可選的URI以定義本地路徑和後端服務器的映射關係。 這條指令能夠設置的協議是「http」或者「https」,而地址既可使用域名或者IP地址加端口(可選)的形式來定義: proxy_pass http://localhost:8000/uri/; 又可使用UNIX域套接字路徑來定義。該路徑接在「unix」字符串後面,兩端由冒號所包圍,好比: proxy_pass http://unix:/tmp/backend.socket:/uri/; 若是解析一個域名獲得多個地址,全部的地址都會以輪轉的方式被使用。固然,也可使用服務器組來定義地址。 請求URI按下面規則傳送給後端服務器: 若是proxy_pass使用了URI,當傳送請求到後端服務器時,規範化之後的請求路徑與配置中的路徑的匹配部分將被替換 爲指令中定義的URI: location /name/ { proxy_pass http://127.0.0.1/remote/; } 若是proxy_pass沒有使用URI,傳送到後端服務器的請求URI通常客戶端發起的原始URI,若是nginx改變了 請求URI,則傳送的URI是nginx改變之後完整的規範化URI: location /some/path/ { proxy_pass http://127.0.0.1; } 在1.1.12版之前,若是proxy_pass沒有使用URI,某些狀況下,nginx改變URI之後,會錯誤地將原始 URI而不是改變之後的URI發送到後端服務器。 某些狀況下,沒法肯定請求URI中應該被替換的部分: 使用正則表達式定義路徑。 這種狀況下,指令不該該使用URI。 在須要代理的路徑中,使用rewrite指令改變了URI,但仍使用相同配置處理請求(break): location /name/ { rewrite /name/([^/]+) /users?name=$1 break; proxy_pass http://127.0.0.1; } 這種狀況下,本指令設置的URI會被忽略,改變後的URI將被髮送給後端服務器。 後端服務器的地址,端口和URI中均可以使用變量: proxy_pass http://$host$uri; 甚至像這樣: proxy_pass $request; 這種狀況下,後端服務器的地址將會在定義的服務器組中查找。若是查找不到,nginx使用resolver來查找該地址。
語法: proxy_pass_header field; 默認值: — 上下文: http, server, location; 容許傳送被屏蔽的後端服務器響應頭到客戶端。
語法: proxy_read_timeout time; 默認值: proxy_read_timeout 60s; 上下文: http, server, location; 定義從後端服務器讀取響應的超時。此超時是指相鄰兩次讀操做之間的最長時間間隔,而不是 整個響應傳輸完成的最長時間。若是後端服務器在超時時間段內沒有傳輸任何數據,鏈接將被關閉。
語法: proxy_redirect default; proxy_redirect off; proxy_redirect redirect replacement; 默認值: proxy_redirect default; 上下文: http, server, location 設置後端服務器「Location」響應頭和「Refresh」響應頭的替換文本。 假設後端服務器返回的響應頭是 「Location: http://localhost:8000/two/some/uri/」,那麼指令 proxy_redirect http://localhost:8000/two/ http://frontend/one/; 將把字符串改寫爲 「Location: http://frontend/one/some/uri/」。 replacement字符串能夠省略服務器名: proxy_redirect http://localhost:8000/two/ /; 此時將使用代理服務器的主域名和端口號來替換。若是端口是80,能夠不加。 用default參數指定的默認替換使用了location和proxy_pass指令的參數。所以,下面兩例配置等價: location /one/ { proxy_pass http://upstream:port/two/; proxy_redirect default; location /one/ { proxy_pass http://upstream:port/two/; proxy_redirect http://upstream:port/two/ /one/; 並且由於一樣的緣由,proxy_pass指令使用變量時,不容許本指令使用default參數。 replacement字符串能夠包含變量: proxy_redirect http://localhost:8000/ http://$host:$server_port/; 而redirect字符串從1.1.11版本開始也能夠包含變量: proxy_redirect http://$proxy_host:8000/ /; 同時,從1.1.11版本開始,指令支持正則表達式。使用正則表達式的話,若是是大小寫敏感的匹配, redirect以「~」做爲開始,若是是大小寫不敏感的匹配,redirect以「~*」做爲開始。並且redirect的 正則表達式中能夠包含命名匹配組和位置匹配組,而在replacement中能夠引用這些匹配組的值: proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2; proxy_redirect ~*/user/([^/]+)/(.+)$ http://$1.example.com/$2; 除此之外,能夠同時定義多個proxy_redirect指令: proxy_redirect default; proxy_redirect http://localhost:8000/ /; proxy_redirect http://www.example.com/ /; 另外,off參數可使全部相同配置級別的proxy_redirect指令無效: proxy_redirect off; proxy_redirect default; proxy_redirect http://localhost:8000/ /; proxy_redirect http://www.example.com/ /; 最後,使用這條指令也能夠爲地址爲相對地址的重定向添加域名: proxy_redirect / /;
語法: proxy_send_timeout time; 默認值: proxy_send_timeout 60s; 上下文: http, server, location 定義向後端服務器傳輸請求的超時。此超時是指相鄰兩次寫操做之間的最長時間間隔,而不是整個請求傳輸完成的最長時間。 若是後端服務器在超時時間段內沒有接收到任何數據,鏈接將被關閉。
語法: proxy_set_header field value; 默認值: proxy_set_header Host $proxy_host; proxy_set_header Connection close; 上下文: http, server, location 容許從新定義或者添加發日後端服務器的請求頭。value能夠包含文本、變量或者它們的組合。 當且僅當當前配置級別中沒有定義proxy_set_header指令時,會從上面的級別繼承配置。 默認狀況下, 只有兩個請求頭會被從新定義: proxy_set_header Host $proxy_host; proxy_set_header Connection close; 若是不想改變請求頭「Host」的值,能夠這樣來設置: proxy_set_header Host $http_host; 可是,若是客戶端請求頭中沒有攜帶這個頭部,那麼傳遞到後端服務器的請求也不含這個頭部。 這種狀況下,更好的方式是使用$host變量——它的值在請求包含「Host」請求頭時爲「Host」字段的值, 在請求未攜帶「Host」請求頭時爲虛擬主機的主域名: proxy_set_header Host $host; 此外,服務器名能夠和後端服務器的端口一塊兒傳送: proxy_set_header Host $host:$proxy_port; 若是某個請求頭的值爲空,那麼這個請求頭將不會傳送給後端服務器: proxy_set_header Accept-Encoding 「」;
語法: proxy_ssl_session_reuse on | off; 默認值: proxy_ssl_session_reuse on; 上下文: http, server, location 決定是否重用與後端服務器的SSL會話。若是日誌中出現「SSL3_GET_FINISHED:digest check failed」錯誤, 請嘗試關閉會話重用。
語法: proxy_store on | off | string; 默認值: proxy_store off; 上下文: http, server, location; 開啓將文件保存到磁盤上的功能。若是設置爲on,nginx將文件保存在alias指令或root指令設置的路徑中。 若是設置爲off,nginx將關閉文件保存的功能。此外,保存的文件名也可使用含變量的string參數來指定: proxy_store /data/www$original_uri; 保存文件的修改時間根據接收到的「Last-Modified」響應頭來設置。響應都是先寫到臨時文件,而後進行重命名來生成的。 從0.8.9版本開始,臨時文件和持久化存儲能夠放在不一樣的文件系統,可是須要注意這時文件執行的是在兩個文件系統間拷貝操做, 而不是廉價的重命名操做。所以建議保存文件的路徑和proxy_temp_path指令設置的臨時文件的路徑在同一個文件系統中。 這條指令能夠用於建立靜態無更改文件的本地拷貝,好比: location /images/ { root /data/www; open_file_cache_errors off; error_page 404 = /fetch$uri; } location /fetch/ { internal; proxy_pass http://backend/; proxy_store on; proxy_store_access user:rw group:rw all:r; proxy_temp_path /data/temp; alias /data/www/; } 或者像這樣: location /images/ { root /data/www; error_page 404 = @fetch; } location @fetch { internal; proxy_pass http://backend; proxy_store on; proxy_store_access user:rw group:rw all:r; proxy_temp_path /data/temp; root /data/www; } 語法: proxy_store_access users:permissions …; 默認值: proxy_store_access user:rw; 上下文: http, server, location 設置新建立的文件和目錄的訪問權限,好比: proxy_store_access user:rw group:rw all:r; 若是指定了任何group或者all的訪問權限,那麼能夠略去user的訪問權限: proxy_store_access group:rw all:r;
語法: proxy_temp_file_write_size size; 默認值: proxy_temp_file_write_size 8k|16k; 上下文: http, server, location 在開啓緩衝後端服務器響應到臨時文件的功能後,設置nginx每次寫數據到臨時文件的size(大小)限制。 size的默認值是proxy_buffer_size指令和proxy_buffers指令定義的每塊緩衝區大小的兩倍, 而臨時文件最大容量由proxy_max_temp_file_size指令設置。
語法: proxy_temp_path path [level1 [level2 [level3]]]; 默認值: proxy_temp_path proxy_temp; 上下文: http, server, location 定義從後端服務器接收的臨時文件的存放路徑,能夠爲臨時文件路徑定義至多三層子目錄的目錄樹。 好比,下面配置 proxy_temp_path /spool/nginx/proxy_temp 1 2; 那麼臨時文件的路徑看起來會是這樣: /spool/nginx/proxy_temp/7/45/00000123457
#user nobody; worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; log_format main 'IP地址:$remote_addr,主機名:$server_name,協議:$request,狀態:$status'; access_log logs/access.log main; upstream aaa { server 127.0.0.1:82 weight=1; server 127.0.0.1:11080 weight=1; } upstream bbb { server 127.0.0.1:12080 weight=1; } server { listen 80; server_name jay.tohours.com; location /a/b{ alias C:/nginx-test/; index index3.txt; } location /a{ alias C:/nginx-test/; index index1.txt; } location /b{ alias C:/nginx-test/; index index2.txt; } location /{ root html; index index.html; } location /tookeen{ proxy_pass http://aaa; proxy_redirect off; 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; proxy_max_temp_file_size 0; proxy_connect_timeout 1800; proxy_send_timeout 1800; proxy_read_timeout 1800; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; client_max_body_size 100m; } location /masterplanner{ proxy_pass http://bbb; proxy_redirect off; 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; proxy_max_temp_file_size 0; proxy_connect_timeout 1800; proxy_send_timeout 1800; proxy_read_timeout 1800; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; client_max_body_size 100m; } location /fhc { proxy_pass http://127.0.0.1:11080; proxy_redirect off; 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; proxy_max_temp_file_size 0; proxy_connect_timeout 1800; proxy_send_timeout 1800; proxy_read_timeout 1800; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; client_max_body_size 100m; } } }
upstream aaa{ server 127.0.0.1:82 weight=1; server 127.0.0.1:11080 weight=2; }
upstream aaa{ ip_hash; server 127.0.0.1:82; server 127.0.0.1:11080; }
upstream aaa{ server 127.0.0.1:82; server 127.0.0.1:11080; fair; }
upstream aaa{ server 127.0.0.1:82; server 127.0.0.1:11080; hash $request_uri; hash_method crc32; }
upstream bbb{ ip_hash; server 10.0.0.11:9090 down; server 10.0.0.11:8080 weight=2; server 10.0.0.11:6060; server 10.0.0.11:7070 backup; }