nginx配置域名轉發到其他域名的幾種方法


直接用return簡單方便 return URL; 顯示跳轉后新的網絡地址

proxy_pass配置可以顯示原來的網頁地址

這篇文章通俗易懂:圖解 | 神器 Nginx 的速成手冊 (qq.com)

以下參考:

1. return 指令

    在重定向滿足兩個條件時適用:
        重寫的 URL 適用於每個匹配的 server 或 location 的請求
        可以使用標准的 NGINX 變量構建重寫的 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 是協議(HTTP 或 HTTPS),$request_uri 是包含參數的完整的 URI。 
server{
    listen         80;
    server_name www.old-name.com;
    
    # return 指令的第一個參數是響應碼。第二個參數可選,可以是重定向的 URL
    # location 和 server 上下文中都可以使用 return 指令。
    return 301 $scheme://www.new-name.com$request_uri;
}

 


2.rewrite

    rewrite 規則會改變部分或整個用戶請求中的 URL,主要有兩個用途:
        通知客戶端,請求的資源已經換地方了。例如網站改版后添加了 www 前綴,通過 rewrite 規則可以將所有請求導向新站點。
        控制 Nginx 中的處理流程。例如當需要動態生成內容時,將請求轉發到應用程序服務器。try_files 指令經常用於這個目的。
    語法:
        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 的區別及共同處:
                last 重寫 url 后,會再從 server 走一遍匹配流程,而 break 終止重寫后的匹配
                break 和 last 都能阻止后面的 rewrite 指令再次執行
        redirect:返回包含 302 代碼的臨時重定向,在替換字符串不以"http://","https://“或”$scheme"開頭時使用.
        permanent:返回包含 301 代碼的永久重定向。
    rewrite 指令只能返回代碼 301 或 302。要返回其他代碼,需要在 rewrite 指令后面包含 return 指令。

3. proxy_pass

    proxy_pass指令中在nginx的兩個模塊都有
        ngx_http_proxy_module的proxy_pass:
            語法: proxy_pass URL;
            場景: location, if in location, limit_except
            說明: 設置后端代理服務器的協議(protocol)和地址(address),以及location中可以匹配的一個可選的URI。協議可以是"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
            說明: 設置后端代理服務器的地址。這個地址(address)可以是一個域名或ip地址和端口,或者一個 unix-domain socket路徑。
            詳見官方文檔: http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_pass

    兩個proxy_pass的關系和區別:
        在兩個模塊中,兩個proxy_pass都是用來做后端代理的指令.
        ngx_stream_proxy_module模塊的proxy_pass指令只能在server段使用,只需要提供域名或ip地址和端口,可以理解為端口轉發,可以使tcp端口,也可以是udp端口.
        ngx-http-proxy-module模塊中的proxy_pass指令需要在location段,location中的if段,limit_except段中使用,處理需要提供域名或ip地址和端口外,還需要提供協議.如 “http” 或 “https”,還有一個可選的url可以配置.

    proxy_pass使用詳解: 現在使用 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;
    
     # 轉發請求到 http://www.example.com
    location / {
        proxy_pass http://www.example.com;
    }
}

 

 

————————————————
版權聲明:本文為CSDN博主「葉孤心丶」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yeguxin/article/details/94020476


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM