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

