Nginx配置轉(zhuǎn)發(fā)URL中包含特殊字符-創(chuàng)新互聯(lián)

Nginx經(jīng)常被用來(lái)作為代理服務(wù)器,可以有效的避免跨域問(wèn)題。

成都創(chuàng)新互聯(lián)公司專注于江陰企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城開(kāi)發(fā)。江陰網(wǎng)站建設(shè)公司,為江陰等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

老項(xiàng)目需要對(duì)接一個(gè)新的服務(wù),但是存在跨域問(wèn)題,然后就配置了一個(gè)代理

可是突然在某天,新接口出現(xiàn)了異常。接口報(bào)了400錯(cuò)誤。

# 轉(zhuǎn)發(fā)
location /test {
			.......其他配置信息.......
          proxy_pass   http://127.0.0.1:8080/;
	  
 }

然后定位發(fā)現(xiàn)新接口url比較特殊還不能修改,在其他的地方也用了,整個(gè)URL中包含了特殊字符,nginx接收之后會(huì)解碼但是轉(zhuǎn)發(fā)出去不會(huì)對(duì)其進(jìn)行編碼,導(dǎo)致對(duì)方訪問(wèn)無(wú)法解析而報(bào)錯(cuò)。
例如這樣的url

services/lists/aa/bb/~~/resource-lists/list%5B@id=%221%22%5D?&t=1669973282354

nginx 進(jìn)行轉(zhuǎn)發(fā)時(shí),url存在特殊字符會(huì)導(dǎo)致請(qǐng)求報(bào)400錯(cuò)誤。

一般正常的處理方式都是直接進(jìn)行正則匹配,使用 $1 直接獲取匹配到的URL,不做任何處理,直接拼接在后面,這樣可以避免報(bào)錯(cuò)。

# 轉(zhuǎn)發(fā)
location /test {
	 if ($request_uri ~* ^/(.*)$) {
          proxy_pass   http://127.0.0.1:8080/$1;
	    }
 } 
#不對(duì)url進(jìn)行處理

最終在此基礎(chǔ)上采用了正則進(jìn)行了url匹配截取了部分url拼接,解決轉(zhuǎn)發(fā)400錯(cuò)誤。

url截取

正則匹配來(lái)獲取截取

# 轉(zhuǎn)發(fā)
location /test {
	 if ($request_uri ~ /test/(.*)$ ){
	 proxy_pass   http://127.0.0.1:8080/$1;
}

$1就是test/后的所有url參數(shù)。

以上只是舉例
正常只需要去掉匹配路徑,在完整轉(zhuǎn)發(fā)即可。

正常轉(zhuǎn)發(fā)情況

1、去掉匹配路徑轉(zhuǎn)發(fā)

轉(zhuǎn)發(fā)示例:
請(qǐng)求:http://somedomain.com/test/path/request
轉(zhuǎn)發(fā):http://otherdomain.com/path/request
location ^~ /test/ {
proxy_pass http://otherdomain.com; }

2、完整路徑轉(zhuǎn)發(fā)

轉(zhuǎn)發(fā)示例
請(qǐng)求:http://somedomain.com/test/path/request
轉(zhuǎn)發(fā):http://otherdomain.com/test/path/request
location ^~ /test {
proxy_pass http://otherdomain.com; }

調(diào)試小技巧 如何查看nginx 的 $1,$2,$3

匹配正則表達(dá)式時(shí),匹配到的值通過(guò)$1、$2、$3、…、$9使用。一個(gè)()就是一個(gè)

location ~* /test/(.*) {
		return 200 "hello, $1";
	}
	location ~* /test1/(.*)/(.*) {
		return 200 "var1 = $1, var2 = $2";
	}

直接返回匹配到的值,打印到接口或者界面中。用來(lái)調(diào)試最終轉(zhuǎn)發(fā)的url

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

新聞名稱:Nginx配置轉(zhuǎn)發(fā)URL中包含特殊字符-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article14/dhejde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站排名、建站公司外貿(mào)建站、微信小程序、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)