日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

關于nginx?反向代理?URL替換方案_nginx

作者:皮卡車厘子 ? 更新時間: 2022-06-01 編程語言

nginx 提供反向代理服務,日常開發過程中有時候我們需要使用nginx 作為代理服務根據url的不同去訪問不同的服務器或者不同端口,如下提供兩種方案。

1.直接替換location??匹配部分

1.proxy_pass的目標地址,默認不帶/,表示只代理域名,url和參數部分不會變(把請求的path拼接到proxy_pass目標域名之后作為代理的URL)

2.如果在目標地址后增加/,則表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目標地址

server {
        listen       80;
        server_name  localhost;
location /system {           
        proxy_pass        http://127.0.0.1:8080;
        proxy_redirect    off;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;			
		}
# proxy_pass  以/結尾
location /system {           
        proxy_pass        http://127.0.0.1:8080/;
        proxy_redirect    off;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;			
		}
        }

例如:http://192.168.25.132/system/sysMenu/tree

如上兩個匹配成功后,實際代理的目標url分別是

http://127.0.0.1:8080/system/sysMenu/tree (把/system/sysMenu/tree拼接到proxy_pass 地址的127.0.0.1:8080之后)

http://127.0.0.1:8080/sysMenu/tree (把/system/sysMenu/tree去掉匹配到的location /system拼接到proxy_pass 地址的127.0.0.1:8080之后)

2.使用nginx 的rewrite 模塊?

rewrite是實現URL重寫的關鍵指令,根據regex(正則表達式)部分內容,重定向到replacement,結尾是flag標記。

  rewrite    <regex>    <replacement>    [flag];
 
    關鍵字      正則        替代內容          flag標記
    關鍵字:其中關鍵字error_log不能改變
    正則:perl兼容正則表達式語句進行規則匹配
    替代內容:將正則匹配的內容替換成replacement
    flag標記:rewrite支持的flag標記
flag標記說明:
last  #本條規則匹配完成后,繼續向下匹配新的location URI規則
break  #本條規則匹配完成即終止,不再匹配后面的任何規則
redirect  #返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址
permanent  #返回301永久重定向,瀏覽器地址欄會顯示跳轉后的URL地址

把到本服務的所有請求轉發到www.summer.com

rewrite ^/(.*) http://www.summer.com/$1 break;

把到本服務器的所有請求路徑中以/system開頭的請求 替換成不帶system的,例如http://192.168.25.132/system/sysMenu/tree ,匹配后地址變成?http://127.0.0.1:8080/sysMenu/tree

rewrite ^/system/(.*) /$1 break;?? ??? ?

說明:????????????????????????????????????????

rewrite為固定關鍵字,表示開始進行rewrite匹配規則

regex部分是?^/(.*)?,這是一個正則表達式,匹配完整的域名和后面的路徑地址

replacement部分是http://www.summer.com/$1? ?$1是取自regex部分()里的內容。匹配成功后跳轉到的URL。

flag部分?break表示停止匹配,然后跳轉到新的?http://www.summer.com/$1?地址上。

server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            #/data/manager可以存放靜態頁面
            root   /data/manager;
            index  index.html index.htm;
        }
		location /system {           
        proxy_pass        http://127.0.0.1:8080;
        proxy_redirect    off;
        proxy_set_header  Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
		rewrite ^/system/(.*) /$1 break;		
		}
    }

regex?常用正則表達式說明

rewrite?企業應用場景

Nginx的rewrite功能在企業里應用非常廣泛:

u?可以調整用戶瀏覽的URL,看起來更規范,合乎開發及產品人員的需求。

u?為了讓搜索引擎搜錄網站內容及用戶體驗更好,企業會將動態URL地址偽裝成靜態地址提供服務。

u?網址換新域名后,讓舊的訪問跳轉到新的域名上。例如,訪問京東的360buy.com會跳轉到jd.com

u?根據特殊變量、目錄、客戶端的信息進行URL調整等

原文鏈接:https://blog.csdn.net/yk614294861/article/details/102688926

欄目分類
最近更新