nginx能否替换服务器发送的301重定向的内容

发布于 2022-09-07 07:33:29 字数 2180 浏览 9 评论 0

最近在学习使用Nginx的https反向代理,选择知网作为被代理的真实服务器来进行测试。

配置文件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;                                      #这个一定要是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'; 

当访问https://zhongxiaotest.com:8080时代理cnki.net,并通过替换response里的url把一些子域名通过其他端口代理起来。

现在遇到两个问题:
1.页面上有些url指向的其实是一个目录,但是url最后没有加‘/’,这样导致在访问这个URL的时候,服务器会返回一个301重定向,重定向里有个Location字段给出了结尾为‘/’的新的url,但这个url是HTTP的:

clipboard.png
(这里我为了截包没有使用HTTPS,此时这个URL刚好是我代理的HTTP的8082端口,因此可以访问成功,如果我的代理监听HTTPS的8082,这个URL就无法访问了)

在网上搜了半天关于Nginx处理重定向的问题,大多都是教你nginx自己如何配置重定向的,如何修改服务器的重定向没找到。不过找到了另一个方法:监听HTTPS的同时也监听HTTP,然后在HTTP的Server块里把HTTP改写成HTTPS。但是我的场景里指定了端口是8082,一个端口不能同时被HTTP和HTTPS监听吧?

所以我想问,Nginx对服务器发过来的301重定向,是否可以修改其中的Location为自己想要的URL。如果可以,使用什么模块的什么指令?

2.有些重定向是在脚本里面做的,比如这个url:“https://zhongxiaotest.com:8083//kns/RedirectPage.aspx?action=usercenter”,点击时访问RedirectPage.aspx,动作为跳转到用户中心,这种脚本里的跳转又该如何处理?
求指教!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

允世 2022-09-14 07:33:29

proxy_redirect了解一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文