nginx http proxy 反向代理
生活随笔
收集整理的這篇文章主要介紹了
nginx http proxy 反向代理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 前言
- proxy配置
- 全部追加到url中
- 部分追加到url中
- 多次代理配置
- 以某個路徑開頭
- weblogic:https請求轉(zhuǎn)成http請求
- tomcat:https請求轉(zhuǎn)成http請求
- nginx多次代理:(tomcat中)scheme或https丟失問題
- nginx多次代理:客戶端真實IP丟失 問題
前言
- nginx 1.14.2
proxy配置
location / {proxy_pass http://127.0.0.1:8080/;proxy_set_header Host $host:$server_port;proxy_set_header Remote_Addr $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Nginx-Proxy true;# index頁面設(shè)置index index;}- proxy_set_header Host $host:$server_port;:告知后端,客戶端請求的真實host和port。
- proxy_set_header X-Real-IP $remote_addr;:真實IP,即客戶端的IP。需要用ngx_http_realip_module 一起使用。
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:代理走過的ip路徑。X-Forwarded-For的值可能為:218.107.55.254, 192.168.0.3, 192.168.0.99, ...,對應(yīng)Client IP, Proxy1 IP, Proxy2 IP, ...
全部追加到url中
location [location表達式] {proxy_pass [proxy_pass表達式];....}當proxy_pass 表達式中端口號后面不包含/字符時,location匹配的部分全部追加到proxy_pass表達式后面。
location / {proxy_pass http://127.0.0.1:8080;....}| http://127.0.0.1/logo.png | / | /logo.png | http://127.0.0.1:8080 | http://127.0.0.1:8080/logo.png | 符合預(yù)期 |
| http://127.0.0.1/images/logo.png | / | /images/logo.png | http://127.0.0.1:8080 | http://127.0.0.1:8080/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/user/add | / | /user/add | http://127.0.0.1:8080 | http://127.0.0.1:8080/user/add | 符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa/ | /oa/logo.png | http://127.0.0.1:8080 | http://127.0.0.1:8080/oa/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa/ | /oa/images/logo.png | http://127.0.0.1:8080 | http://127.0.0.1:8080/oa/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa/ | /oa/user/add | http://127.0.0.1:8080 | http://127.0.0.1:8080/oa/user/add | 符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa | /oa/logo.png | http://127.0.0.1:8080 | http://127.0.0.1:8080/oa/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa | /oa/images/logo.png | http://127.0.0.1:8080 | http://127.0.0.1:8080/oa/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa | /oa/user/add | http://127.0.0.1:8080 | http://127.0.0.1:8080/oa/user/add | 符合預(yù)期 |
| http://127.0.0.1/oauser/add | /oa | /oauser/add | http://127.0.0.1:8080 | http://127.0.0.1:8080/oauser/add | 符合預(yù)期 |
注:按照使用代理方式將url中的端口號去掉進行評判,比如將http://127.0.0.1/logo.png代理成ttp://127.0.0.1:8080/logo.png。
proxy_pass 表達式中端口號后面不包含/字符時:
- location 表達式是否以/結(jié)尾均可。
部分追加到url中
當proxy_pass 表達式中端口號后面包含/字符時,對location匹配的部分進行截取操作,將截取所得的部分追加到proxy_pass表達式后面。
location / {proxy_pass http://127.0.0.1:8080/oa/;....}| http://127.0.0.1/logo.png | / | logo.png | http://127.0.0.1:8080/ | http://127.0.0.1:8080/logo.png | 符合預(yù)期 |
| http://127.0.0.1/images/logo.png | / | images/logo.png | http://127.0.0.1:8080/ | http://127.0.0.1:8080/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/user/add | / | user/add | http://127.0.0.1:8080/ | http://127.0.0.1:8080/user/add | 符合預(yù)期 |
| http://127.0.0.1/logo.png | / | logo.png | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/logo.png | 不符合預(yù)期 |
| http://127.0.0.1/images/logo.png | / | images/logo.png | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/images/logo.png | 不符合預(yù)期 |
| http://127.0.0.1/user/add | / | user/add | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/user/add | 不符合預(yù)期 |
| http://127.0.0.1/logo.png | / | logo.png | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oalogo.png | 不符合預(yù)期 |
| http://127.0.0.1/images/logo.png | / | images/logo.png | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oa/imageslogo.png | 不符合預(yù)期 |
| http://127.0.0.1/user/add | / | user/add | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oa/useradd | 不符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | / | oa/logo.png | http://127.0.0.1:8080/ | http://127.0.0.1:8080/oa/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | / | oa/images/logo.png | http://127.0.0.1:8080/ | http://127.0.0.1:8080/oa/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/user/add | / | oa/user/add | http://127.0.0.1:8080/ | http://127.0.0.1:8080/oa/user/add | 符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa/ | logo.png | http://127.0.0.1:8080/ | http://127.0.0.1:8080/logo.png | 不符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa/ | images/logo.png | http://127.0.0.1:8080/ | http://127.0.0.1:8080/images/logo.png | 不符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa/ | user/add | http://127.0.0.1:8080/ | http://127.0.0.1:8080/user/add | 不符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa/ | logo.png | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa/ | images/logo.png | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa/ | user/add | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/user/add | 符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa/ | logo.png | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oalogo.png | 不符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa/ | images/logo.png | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oaimages/logo.png | 不符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa/ | user/add | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oauser/add | 不符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa | /logo.png | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa//logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa | /images/logo.png | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa//images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa | /user/add | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa//user/add | 符合預(yù)期 |
| http://127.0.0.1/oauser/add | /oa | user/add | http://127.0.0.1:8080/oa/ | http://127.0.0.1:8080/oa/user/add | 不符合預(yù)期 |
| http://127.0.0.1/oa/logo.png | /oa | /logo.png | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oa/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/images/logo.png | /oa | /images/logo.png | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oa/images/logo.png | 符合預(yù)期 |
| http://127.0.0.1/oa/user/add | /oa | /user/add | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oa/user/add | 符合預(yù)期 |
| http://127.0.0.1/oauser/add | /oa | user/add | http://127.0.0.1:8080/oa | http://127.0.0.1:8080/oauser/add | 符合預(yù)期 |
注:按照使用代理方式將url中的端口號去掉進行評判,比如將http://127.0.0.1/logo.png代理成ttp://127.0.0.1:8080/logo.png。
proxy_pass 表達式中端口號后面包含/字符時:
- proxy_pass 表達式以/結(jié)尾時,location 表達式也應(yīng)以/結(jié)尾
- proxy_pass 表達式不以/結(jié)尾時,location 表達式也不應(yīng)以/結(jié)尾
多次代理配置
location / {proxy_pass http://127.0.0.1:8081;proxy_set_header Host $host:$server_port;proxy_set_header Remote_Addr $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;set $xscheme $scheme;if ( $http_x_nginx_proxy ) {set $xscheme $http_x_forwarded_proto;}proxy_set_header X-Forwarded-Proto $xscheme;proxy_set_header X-Nginx-Proxy true;index index; }以某個路徑開頭
location ^~ /api {...}或者
location ~* ^/api {...}weblogic:https請求轉(zhuǎn)成http請求
location / {...proxy_set_header WL-Proxy-SSL true; ...}- proxy_set_header WL-Proxy-SSL true; https請求轉(zhuǎn)成http請求時,weblogic設(shè)置
tomcat:https請求轉(zhuǎn)成http請求
location / {...proxy_set_header X-Forwarded-Proto $scheme;...}- proxy_set_header X-Forwarded-Proto $scheme; https請求轉(zhuǎn)成http請求時,tomcat設(shè)置
nginx多次代理:(tomcat中)scheme或https丟失問題
- 在第1層代理上設(shè)置X-Forwarded-Proto
- 在第2層代理上再次設(shè)置X-Forwarded-Proto
- 在第3層及更多層,參考第2層的設(shè)置
nginx多次代理:客戶端真實IP丟失 問題
- 在第1層代理上設(shè)置X-Real-IP
- 在第2層代理上再次設(shè)置X-Real-IP
- 在第3層及更多層,參考第2層的設(shè)置
總結(jié)
以上是生活随笔為你收集整理的nginx http proxy 反向代理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx注册为windows系统服务
- 下一篇: 眼压的正常值是多少