在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Linux  網(wǎng)絡(luò)安全  HTML/ nginx能否替換服務(wù)器發(fā)送的301重定向的內(nèi)容

nginx能否替換服務(wù)器發(fā)送的301重定向的內(nèi)容

最近在學(xué)習(xí)使用Nginx的https反向代理,選擇知網(wǎng)作為被代理的真實(shí)服務(wù)器來(lái)進(jìn)行測(cè)試。

配置文件cnki.conf:

server {
   listen 8080;
   server_name *.zhongxiaocnki.net;
   include enable_ssl.conf;
###  log files ### 
   access_log logs/access.log; 
   error_log logs/error.log debug; 

   location / {
   proxy_pass http://cnki.net;                                      #這個(gè)一定要是https
   proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
   proxy_set_header Host $host:$server_port; 
   proxy_set_header X-Real-IP $remote_addr; 
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
   proxy_set_header X-Forwarded-Proto https; 
   proxy_redirect off; 
   
   include url_rewrite/*.conf; 
}
}

配置文件url_rewrite/*.conf:

set $prtc "https";

sub_filter_once off;                                                                                
sub_filter_types *;
sub_filter 'http://piccache.cnki.net'  '$prtc://$host:8081';
sub_filter 'http://r.cnki.net'  '$prtc://$host:8082';
sub_filter 'http://kns.cnki.net'  '$prtc://$host:8083';
sub_filter 'http://my.cnki.net'  '$prtc://$host:8084'; 
sub_filter 'http://nvsm.cnki.net'  '$prtc://$host:8085'; 
sub_filter 'http://www.cnki.net'  '$prtc://$host:8080'; 

當(dāng)訪問(wèn)https://zhongxiaotest.com:8080時(shí)代理cnki.net,并通過(guò)替換response里的url把一些子域名通過(guò)其他端口代理起來(lái)。

現(xiàn)在遇到兩個(gè)問(wèn)題:
1.頁(yè)面上有些url指向的其實(shí)是一個(gè)目錄,但是url最后沒(méi)有加‘/’,這樣導(dǎo)致在訪問(wèn)這個(gè)URL的時(shí)候,服務(wù)器會(huì)返回一個(gè)301重定向,重定向里有個(gè)Location字段給出了結(jié)尾為‘/’的新的url,但這個(gè)url是HTTP的:

clipboard.png
(這里我為了截包沒(méi)有使用HTTPS,此時(shí)這個(gè)URL剛好是我代理的HTTP的8082端口,因此可以訪問(wèn)成功,如果我的代理監(jiān)聽(tīng)HTTPS的8082,這個(gè)URL就無(wú)法訪問(wèn)了)

在網(wǎng)上搜了半天關(guān)于Nginx處理重定向的問(wèn)題,大多都是教你nginx自己如何配置重定向的,如何修改服務(wù)器的重定向沒(méi)找到。不過(guò)找到了另一個(gè)方法:監(jiān)聽(tīng)HTTPS的同時(shí)也監(jiān)聽(tīng)HTTP,然后在HTTP的Server塊里把HTTP改寫(xiě)成HTTPS。但是我的場(chǎng)景里指定了端口是8082,一個(gè)端口不能同時(shí)被HTTP和HTTPS監(jiān)聽(tīng)吧?

所以我想問(wèn),Nginx對(duì)服務(wù)器發(fā)過(guò)來(lái)的301重定向,是否可以修改其中的Location為自己想要的URL。如果可以,使用什么模塊的什么指令?

2.有些重定向是在腳本里面做的,比如這個(gè)url:“https://zhongxiaotest.com:8083//kns/RedirectPage.aspx?action=usercenter”,點(diǎn)擊時(shí)訪問(wèn)RedirectPage.aspx,動(dòng)作為跳轉(zhuǎn)到用戶(hù)中心,這種腳本里的跳轉(zhuǎn)又該如何處理?
求指教!

回答
編輯回答
尐懶貓

proxy_redirect了解一下

2018年8月30日 02:20