nginx如何通過proxy_pass設(shè)置反向代理,隱藏端口號(hào)
通過proxy_pass設(shè)置反向代理,隱藏端口號(hào)
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和端口號(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拼接到代理地址,才是最終訪問的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
- 最終訪問的url:http://127.0.0.1:8099/svr1/index.html
- 即訪問 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拼接到代理地址,就是最終訪問的url
如:
location /proxy2 { proxy_pass http://127.0.0.1:8099; # 無uri }
發(fā)送如下請(qǐng)求:http://localhost:8088/proxy2/index.html
詳細(xì)解析:
- 請(qǐng)求的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,
- 實(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之間沒有斜杠,分析一下原因。 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配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡
這篇文章主要介紹了Nginx配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07Windows系統(tǒng)下安裝及部署Nginx詳細(xì)教程(含多個(gè)站點(diǎn)部署)
Nginx是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù),也是一種輕量級(jí)的Web服務(wù)器,可以作為獨(dú)立的服務(wù)器部署網(wǎng)站,應(yīng)用非常廣泛,這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下安裝及部署Nginx(含多個(gè)站點(diǎn)部署)的相關(guān)資料,需要的朋友可以參考下2024-01-01nginx 作為反向代理實(shí)現(xiàn)負(fù)載均衡的例子
以下我們就來舉例說明如何使用 nginx 實(shí)現(xiàn)負(fù)載均衡。因?yàn)閚ginx在處理并發(fā)方面的優(yōu)勢(shì),現(xiàn)在這個(gè)應(yīng)用非常常見。2010-12-12Nginx之rewrite實(shí)現(xiàn)URL重寫方式
文章介紹了Nginx的rewrite模塊,包括其重要性、相關(guān)指令(如set、if、break、return、rewrite)的使用方法和作用域,并舉例說明了這些指令的實(shí)際應(yīng)用場(chǎng)景,如域名重定向和防盜鏈處理2025-03-03Nginx使用的php-fpm的兩種進(jìn)程管理方式及優(yōu)化
這篇文章主要介紹了Nginx使用的php-fpm的兩種進(jìn)程管理方式及優(yōu)化,需要的朋友可以參考下2016-09-09