94 過濾模塊 從下到上順序
server {
listen 30004;
server_name shop***s.com.cn;
location /{ proxy_pass http://test; proxy_hide_header aaa; #啟動某個頭部隱藏 則不會返回給客戶端 proxy_pass_header server; proxy_ignore_headers X-Accel-Limit-Rate; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_method POST; } } upstream test { server 192.168.0.51:8890 weight=1 ; }
上游服務器代碼
server { listen 8890; location / { add_header aaa 'aaa value'; #這里加了個頭 } }
測試代碼
[root@3 webserver]# curl sh****s.com.cn:30004 -I HTTP/1.1 200 OK Server: openresty/1.13.6.2 Date: Sun, 12 May 2019 03:30:57 GMT Content-Type: text/html Content-Length: 612 Connection: keep-alive Last-Modified: Sat, 23 Mar 2019 08:55:05 GMT ETag: "5c95f469-264" aaa: aaa value //如果我們不隱藏指定頭部則響應給客戶端 Accept-Ranges: bytes
ngx_http_proxy_module 模塊
Syntax: | proxy_ignore_headers |
---|---|
Default: | — |
Context: | http , server , location |
功能 :某些行為可能會改變nginx行為,使用proxy_ignore_hreades可以禁止他們生效
可以禁用的頭部:
- X-Accel_Redirect : 由上游服務指定nginx內部重定向 控制請求的執行
- X-Accel-Limit-Rate: 由上游設置發往客戶端速度限制 等同於limit_rate指令
- X-Accel-Buffering:由上游控制是否緩存上游的響應
- X-Accel-Charset:由上游控制 Content-Type中的Charset
緩存相關:
- X-Accel-Expires:設置響應在nginx中的緩存時間 單位秒 ;@開頭表示一天內的某時刻
- Expires:控制nginx緩存時間 優先級低於 X-Accel-Expires
- Cache-Control: 控制nginx緩存時間 優先級低於 X-accel-Expires
- Set-Cookie:響應出現Set-Cookie則不緩存 可以通過proxy_ignore_headers 禁止生效
- Vary 響應中出現Vary:* 則不緩存 可以禁止生效
proxy_hide_header 指令是指對於上游響應中的某些頭部,設置不向客戶端轉發 默認不轉發
- Date:由nginx_http_header_filter_module過濾模塊填寫,值為nginx發送響應頭部的時間
- Server:由nginx_http_header_filter_module過濾模塊填寫 ,值為nginx版本
- X-Pad:通常是Apache為避免瀏覽器BUG生成頭部,默認忽略
- X-Accel-:用於控制nginx行為的響應,不需要向客戶端轉發
Syntax: | proxy_hide_header |
---|---|
Default: | — |
Context: | http , server , location |
proxy_pass_header 對於被已經被proxy_hide_header的頭部,設置向上游轉發
Syntax: | proxy_pass_header |
---|---|
Default: | — |
Context: | http , server , location |
proxy_cookie_domain 指令是指修改域名 如:域名是A 則修改成 B
Syntax: | proxy_cookie_domain proxy_cookie_domain |
---|---|
Default: | proxy_cookie_domain off; |
Context: | http , server , location |
proxy_cookie_domain localhost example.org; #用於域名替換
Syntax: | proxy_cookie_path proxy_cookie_path |
---|---|
Default: | proxy_cookie_path off; |
Context: | http , server , location |
proxy_cookie_path off; proxy_cookie_path /two/ /; #用於uri替換 proxy_cookie_path ~*^/user/([^/]+) /u/$1;
Syntax:proxy_redirect
default
; proxy_redirect
off
; proxy_redirect
redirect
replacement
;
Default:proxy_redirect default;
Context:http
, server
, location
proxy_redirect http://localhost:8000/two/ http://frontend/one/;