最近在學(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的:
(這里我為了截包沒(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)又該如何處理?
求指教!
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。