nginx配置域名轉(zhuǎn)發(fā)到其他域名的幾種方法小結(jié)
直接用return簡單方便 return URL; 顯示跳轉(zhuǎn)后新的網(wǎng)絡(luò)地址
proxy_pass配置可以顯示原來的網(wǎng)頁地址
以下參考:
return 指令
- 在重定向滿足兩個條件時適用:
- 重寫的 URL 適用于每個匹配的 server 或 location 的請求
- 可以使用標準的 NGINX 變量構(gòu)建重寫的 URL
return 指令簡單高效,建議盡量使用 return,而不是 rewrite。
return 指令放在 server 或 location 上下文中。語法很簡單
return code [text]; return code URL; return URL;
# 下面代碼中,listen 指令表明 server 塊同時用于 HTTP流量。 # server_name 指令匹配包含域名 ‘www.old-name.com' 的請求。return 指令告訴 Nginx 停止處理請求,直接返回 301 (Moved Permanently) 代碼和指定的重寫過的 URL 到客戶端。 # $scheme 是協(xié)議(HTTP 或 HTTPS),$request_uri 是包含參數(shù)的完整的 URI。 server{ listen 80; server_name www.old-name.com; # return 指令的第一個參數(shù)是響應(yīng)碼。第二個參數(shù)可選,可以是重定向的 URL # location 和 server 上下文中都可以使用 return 指令。 return 301 $scheme://www.new-name.com$request_uri; }
rewrite
rewrite 規(guī)則會改變部分或整個用戶請求中的 URL,主要有兩個用途:
通知客戶端,請求的資源已經(jīng)換地方了。例如網(wǎng)站改版后添加了 www 前綴,通過 rewrite 規(guī)則可以將所有請求導向新站點。
控制 Nginx 中的處理流程。例如當需要動態(tài)生成內(nèi)容時,將請求轉(zhuǎn)發(fā)到應(yīng)用程序服務(wù)器。try_files 指令經(jīng)常用于這個目的。
語法:rewrite regex URL [flag];
- flag標志位:
- last:停止處理當前的 ngx_http_rewrite_module 指令集,并開始對匹配更改后的 URI 的新 location 進行搜索(再從 server 走一遍匹配流程)。此時對于當前 server 或 location 上下文,不再處理 ngx_http_rewrite_module 重寫模塊的指令。
- break:停止處理當前的 ngx_http_rewrite_module 指令集.
- last 和 break 的區(qū)別及共同處:
- last 重寫 url 后,會再從 server 走一遍匹配流程,而 break 終止重寫后的匹配
- break 和 last 都能阻止后面的 rewrite 指令再次執(zhí)行
- redirect:返回包含 302 代碼的臨時重定向,在替換字符串不以"http://","https://“或”$scheme"開頭時使用.
- permanent:返回包含 301 代碼的永久重定向。
- rewrite 指令只能返回代碼 301 或 302。要返回其他代碼,需要在 rewrite 指令后面包含 return 指令。
proxy_pass
proxy_pass指令中在nginx的兩個模塊都有
ngx_http_proxy_module的proxy_pass:
語法: proxy_pass URL;
場景: location, if in location, limit_except
說明: 設(shè)置后端代理服務(wù)器的協(xié)議(protocol)和地址(address),以及l(fā)ocation中可以匹配的一個可選的URI。協(xié)議可以是"http"或"https"。地址可以是一個域名或ip地址和端口,或者一個 unix-domain socket 路徑。
詳見官方文檔: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
ngx_stream_proxy_module的proxy_pass:
語法: proxy_pass address;
場景: server
說明: 設(shè)置后端代理服務(wù)器的地址。這個地址(address)可以是一個域名或ip地址和端口,或者一個 unix-domain socket路徑。
詳見官方文檔: http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_pass
兩個proxy_pass的關(guān)系和區(qū)別:
- 在兩個模塊中,兩個proxy_pass都是用來做后端代理的指令.
- ngx_stream_proxy_module模塊的proxy_pass指令只能在server段使用,只需要提供域名或ip地址和端口,可以理解為端口轉(zhuǎn)發(fā),可以使tcp端口,也可以是udp端口.
- ngx-http-proxy-module模塊中的proxy_pass指令需要在location段,location中的if段,limit_except段中使用,處理需要提供域名或ip地址和端口外,還需要提供協(xié)議.如 “http” 或 “https”,還有一個可選的url可以配置.
proxy_pass使用詳解: 現(xiàn)在使用 http://test.yeguxin.top/proxy/aaa/bbb.text
第一種: 絕對路徑. proxy_pass http://127.0.0.1:8080; 后面8080沒有 “/”
第二種:相對路徑. proxy_pass http://127.0.0.1:8080; 后面8080有 “/”
第三種 proxy_pass http://127.0.0.1:8080/static; 后面static沒有 “/”
第四種 proxy_pass http://127.0.0.1:8080/static; 后面static有 “/”
最基本proxy_pass 用法
server { listen 80; server_name chat.paas.scorpio.uat.newtank.cn; # 轉(zhuǎn)發(fā)請求到 http://www.example.com location / { proxy_pass http://www.example.com; } }
到此這篇關(guān)于nginx配置域名轉(zhuǎn)發(fā)到其他域名的幾種方法小結(jié)的文章就介紹到這了,更多相關(guān)nginx配置域名轉(zhuǎn)發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx多域名轉(zhuǎn)發(fā)的實現(xiàn)
- 解決spring cloud zuul與nginx的域名轉(zhuǎn)發(fā)問題
- Nginx域名轉(zhuǎn)發(fā)https訪問的實現(xiàn)
- Nginx域名轉(zhuǎn)發(fā)使用場景代碼實例
- Nginx 設(shè)置域名轉(zhuǎn)發(fā)到指定端口的實現(xiàn)方法
- Nginx 域名轉(zhuǎn)發(fā)的實現(xiàn)
- 使用nginx正向代理實現(xiàn)內(nèi)網(wǎng)域名轉(zhuǎn)發(fā)過程解析
- nginx反向代理用做內(nèi)網(wǎng)域名轉(zhuǎn)發(fā)
相關(guān)文章
nginx如何實現(xiàn)同個ip、端口訪問不同的項目(以路徑區(qū)分項目)
這篇文章主要介紹了nginx如何實現(xiàn)同個ip、端口訪問不同的項目(以路徑區(qū)分項目),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12在nginx中實現(xiàn)單位時間內(nèi)限制訪問頻率的教程
這篇文章主要介紹了在nginx中實現(xiàn)單位時間內(nèi)限制訪問頻率的教程,并非針對IP而是全局的訪問量限制,需要的朋友可以參考下2015-04-04Nginx 域名轉(zhuǎn)發(fā)的實現(xiàn)
這篇文章主要介紹了Nginx 域名轉(zhuǎn)發(fā)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08