nginx如何通過proxy_pass設(shè)置反向代理,隱藏端口號
通過proxy_pass設(shè)置反向代理,隱藏端口號
nginx配置修改,通過 proxy_pass 設(shè)置反向代理,監(jiān)聽域名(IP)轉(zhuǎn)發(fā)到指定端口。
server
{
listen 80;
server_name www.xxx.com;
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://www.xxx.com:8978;
}
}nginx proxy_pass的配置
Nginx的官網(wǎng)將proxy_pass分為兩種類型:
- 不帶URI方式:只包含IP和端口號的,不帶uri(單個/也算uri),比如
proxy_pass http://localhost:8080; - 帶URI方式:在端口號之后有其他路徑的,包含了只有單個
/的如proxy_pass http://localhost:8080/,以及其他路徑,比如proxy_pass http://localhost:8080/abc。
URL末尾存在 uri
處理邏輯:
代理請求時,會先將請求的uri中和location匹配的部分替換成 proxy_pass 指定的uri,再將最終的uri拼接到代理地址,才是最終訪問的url
如:
location /proxy {
proxy_pass http://127.0.0.1:8099/svr1; # uri為'/svr1'
}發(fā)送如下請求:http://localhost:8088/proxy/index.html
詳細(xì)解析:
- 請求的uri:/proxy/index.html
- location匹配的部分:/proxy
- proxy_pass 指定的uri:/svr1
- 最終的uri:/svr1/index.html (將請求的uri中和location匹配的部分替換成 proxy_pass 指定的uri)
- 代理地址:http://127.0.0.1:8099
- 最終訪問的url:http://127.0.0.1:8099/svr1/index.html
- 即訪問 http://localhost:8088/proxy/index.html,
- 實際請求路徑為 http://127.0.0.1:8099/svr1/index.html
URL末尾不存在 uri
處理邏輯:
代理請求時,直接將請求的uri拼接到代理地址,就是最終訪問的url
如:
location /proxy2 {
proxy_pass http://127.0.0.1:8099; # 無uri
}發(fā)送如下請求:http://localhost:8088/proxy2/index.html
詳細(xì)解析:
- 請求的uri:/proxy2/index.html
- 代理地址:http://127.0.0.1:8099
- 最終訪問的url:http://127.0.0.1:8099/proxy2/index.html
- 即訪問 http://localhost:8088/proxy2/index.html,
- 實際請求路徑為 http://127.0.0.1:8099/proxy2/index.html
下面的幾個例子加深理解
server {
listen 80;
server_name localhost;
location /api1/ {
proxy_pass http://localhost:8080;
}
# http://localhost/api1/xxx -> http://localhost:8080/api1/xxx
location /api2/ {
proxy_pass http://localhost:8080/;
}
# http://localhost/api2/xxx -> http://localhost:8080/xxx
location /api3 {
proxy_pass http://localhost:8080;
}
# http://localhost/api3/xxx -> http://localhost:8080/api3/xxx
location /api4 {
proxy_pass http://localhost:8080/;
}
# http://localhost/api4/xxx -> http://localhost:8080//xxx,請注意這里的雙斜線,好好分析一下。
location /api5/ {
proxy_pass http://localhost:8080/haha;
}
# http://localhost/api5/xxx -> http://localhost:8080/hahaxxx,請注意這里的haha和xxx之間沒有斜杠,分析一下原因。
location /api6/ {
proxy_pass http://localhost:8080/haha/;
}
# http://localhost/api6/xxx -> http://localhost:8080/haha/xxx
location /api7 {
proxy_pass http://localhost:8080/haha;
}
# http://localhost/api7/xxx -> http://localhost:8080/haha/xxx
location /api8 {
proxy_pass http://localhost:8080/haha/;
}
# http://localhost/api8/xxx -> http://localhost:8080/haha//xxx,請注意這里的雙斜杠。
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx rewrite 實現(xiàn)URL跳轉(zhuǎn)的方法
今天小編就為大家分享一篇nginx rewrite 實現(xiàn)URL跳轉(zhuǎn)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
通過nginx反向代理來調(diào)試代碼的實現(xiàn)
這篇文章主要介紹了通過nginx反向代理來調(diào)試代碼的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Nginx實現(xiàn)動態(tài)內(nèi)容緩存的示例代碼
在Nginx中實現(xiàn)動態(tài)內(nèi)容的緩存可以顯著提高性能,減少后端服務(wù)器的負(fù)載,本文就來介紹一下Nginx動態(tài)內(nèi)容緩存實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-11-11
nginx location中多個if里面proxy_pass的方法
這篇文章主要介紹了nginx location中多個if里面proxy_pass的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
如何在centos上使用yum安裝rabbitmq-server
這篇文章主要介紹了如何在centos上使用yum安裝rabbitmq-server,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09

