Nginx域名轉(zhuǎn)發(fā)使用場景代碼實(shí)例
場景1:因服務(wù)器限制,所以只對外開放了一個(gè)端口,但是需要請求不同的外網(wǎng)環(huán)境,所以在中轉(zhuǎn)服務(wù)器上用nginx做了一次轉(zhuǎn)發(fā)
實(shí)現(xiàn):
server { listen 8051; server_name localhost; location /license/ { proxy_pass http://xxx.xxx.xxx.xxx:8058/; } location / { proxy_pass http://xxx.xxx.xxx.xxx:8051/; } }
特別注意:
敲黑板:此處如果涉及到文件上傳的轉(zhuǎn)發(fā),相應(yīng)在server_name下添加client_max_body_size 100m;
域名轉(zhuǎn)發(fā)的地址,proxy_pass后面必須跟"/",否則會(huì)造成轉(zhuǎn)發(fā)不正常
在nginx中配置proxy_pass代理轉(zhuǎn)發(fā)時(shí),如果在proxy_pass后面的url加/,表示絕對根路徑;
如果沒有/,表示相對路徑,把匹配的路徑部分也給代理走。
假設(shè)下面四種情況分別用 http://192.168.1.1/proxy/aerchi.html 進(jìn)行訪問。
第一種:
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
代理到URL:http://127.0.0.1/aerchi.html
第二種(相對于第一種,最后少一個(gè) / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
代理到URL:http://127.0.0.1/proxy/aerchi.html
第三種:
location /proxy/ {
proxy_pass http://127.0.0.1/aaa/;
}
代理到URL:http://127.0.0.1/aaa/aerchi.html
第四種(相對于第三種,最后少一個(gè) / )
location /proxy/ {
proxy_pass http://127.0.0.1/aaa;
}
代理到URL:http://127.0.0.1/aaaaerchi.html
場景2:因業(yè)務(wù)需要,一套前段代碼需要映射到兩個(gè)后臺地址上,所以需要在接口上進(jìn)行區(qū)分轉(zhuǎn)發(fā),同時(shí)轉(zhuǎn)發(fā)時(shí)需要把區(qū)分標(biāo)志去掉
實(shí)現(xiàn):
server { listen 0.0.0.0:8204; server_name localhost; # 靜態(tài)頁面目錄 root E:\xxxxxxx; # 默認(rèn)首頁 index /index.html; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_cookie_path /* /*; client_max_body_size 100m; location ~*/wx/(.*) {#根絕接口是否包含/wx/來區(qū)分 # 動(dòng)態(tài)頁面,交給tomcat處理 if ( !-e $request_filename) { proxy_pass http://127.0.0.1:8091/$1;#轉(zhuǎn)到后臺時(shí)需要把/wx去掉 } } location / { # 用戶瀏覽器端的緩存設(shè)置 location ~* \.(css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ { expires -1; if (-f $request_filename) { break; } } # 動(dòng)態(tài)頁面,交給tomcat處理 if ( !-e $request_filename) { proxy_pass http://127.0.0.1:8092; #proxy_cookie_path /* /*; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
特別注意:
1、 proxy_set_header Host $http_host;
不改變請求頭 。
2、proxy_set_header Host host;如果客戶端請求頭中沒有攜帶這個(gè)頭部,那么傳遞到后端服務(wù)器的請求也不含這個(gè)頭部。這種情況下,使用 host;如果客戶端請求頭中沒有攜帶這個(gè)頭部,那么傳遞到后端服務(wù)器的請求也不含這個(gè)頭部。 這種情況下,使用host;如果客戶端請求頭中沒有攜帶這個(gè)頭部,那么傳遞到后端服務(wù)器的請求也不含這個(gè)頭部。這種情況下,使用host變量它 的值在請求包含“Host”請求頭時(shí)為“Host”字段的值,在請求未攜帶“Host”請求頭時(shí)為虛擬主機(jī)的主域名;
3、proxy_set_header Host host: host:host:proxy_port;
服務(wù)器名可以和后端服務(wù)器的端口一起傳送:
4、如果某個(gè)請求頭的值為空,那么這個(gè)請求頭將不會(huì)傳送給后端服務(wù)器:
proxy_set_header Accept-Encoding “”;
5、用戶真實(shí)的ip地址轉(zhuǎn)發(fā)給后端服務(wù)器
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
場景3:前段代碼用vue實(shí)現(xiàn),vue沒有具體的頁面,也是通過/xx/xx來訪問資源,這時(shí)候需要與后臺接口進(jìn)行區(qū)分
實(shí)現(xiàn):
可以通過特殊字符類似“#”來區(qū)分,攜帶#的請求默認(rèn)是靜態(tài)資源
location ~* \.(#|css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ { expires -1; if (-f $request_filename) { break; } }
場景4:因服務(wù)器限制,數(shù)據(jù)庫訪問需要nginx進(jìn)行轉(zhuǎn)發(fā)
實(shí)現(xiàn):
stream { upstream cloudsocket { hash $remote_addr consistent; server 數(shù)據(jù)庫實(shí)際ip:3306 weight=5 max_fails=3 fail_timeout=30s; } server { listen 127.0.0.1:8058; #本機(jī)代理端口 proxy_connect_timeout 10s; proxy_timeout 300s;#設(shè)置客戶端和代理服務(wù)之間的超時(shí)時(shí)間,如果5分鐘內(nèi)沒操作將自動(dòng)斷開。 proxy_pass cloudsocket; } }
特別注意:
stream與http同級,所以不要放到http里
場景5:訪問某域名時(shí)需要重定向到另一個(gè)地址
實(shí)現(xiàn):
server { listen 7000; server_name localhost; client_max_body_size 100m; location = / { rewrite ^(.*) https://www.baidu.com permanent; } }
特別注意:
last 本條規(guī)則匹配完成后繼續(xù)向下匹配新的location URI規(guī)則
break 本條規(guī)則匹配完成后終止,不在匹配任何規(guī)則
redirect 返回302臨時(shí)重定向
permanent 返回301永久重定向
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- nginx多域名轉(zhuǎn)發(fā)的實(shí)現(xiàn)
- 解決spring cloud zuul與nginx的域名轉(zhuǎn)發(fā)問題
- Nginx域名轉(zhuǎn)發(fā)https訪問的實(shí)現(xiàn)
- Nginx 設(shè)置域名轉(zhuǎn)發(fā)到指定端口的實(shí)現(xiàn)方法
- Nginx 域名轉(zhuǎn)發(fā)的實(shí)現(xiàn)
- 使用nginx正向代理實(shí)現(xiàn)內(nèi)網(wǎng)域名轉(zhuǎn)發(fā)過程解析
- nginx反向代理用做內(nèi)網(wǎng)域名轉(zhuǎn)發(fā)
- nginx配置域名轉(zhuǎn)發(fā)到其他域名的幾種方法小結(jié)
相關(guān)文章
使用Nginx進(jìn)行URL轉(zhuǎn)發(fā)的配置案例
Nginx是一個(gè)高性能的Web服務(wù)器和反向代理服務(wù)器,它還可以用于URL轉(zhuǎn)發(fā),在本教學(xué)文章中,我們將從安裝Nginx開始,逐步介紹配置步驟,并展示一個(gè)URL轉(zhuǎn)發(fā)的案例,感興趣的朋友可以參考下2023-09-09Nginx gateway集群和動(dòng)態(tài)網(wǎng)關(guān)的實(shí)現(xiàn)思路
這篇文章主要介紹了Nginx gateway集群和動(dòng)態(tài)網(wǎng)關(guān),動(dòng)態(tài)網(wǎng)關(guān)即任何配置都實(shí)現(xiàn)不用重啟網(wǎng)關(guān)服務(wù)器都可以及時(shí)刷新,對Nginx gateway集群相關(guān)知識感興趣的朋友一起看看吧2022-10-10一文教會(huì)你使用Nginx訪問日志統(tǒng)計(jì)PV與UV
做網(wǎng)站的都知道,平常經(jīng)常要查詢下網(wǎng)站PV、UV等網(wǎng)站的訪問數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于如何使用Nginx訪問日志統(tǒng)計(jì)PV與UV的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問的方法
這篇文章主要介紹了Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問的方法,用戶認(rèn)證部分用到了自帶的ngx_http_auth_basic_module模塊,需要的朋友可以參考下2016-01-01