Nginx:proxy_pass和try_files 301跳转带了端口

本文涉及的产品
.cn 域名,1个 12个月
简介: Nginx:proxy_pass和try_files 301跳转带了端口

目录

原来的配置

遇到的状况1:

遇到的状况2:

最终版本

场景描述:


公司有一台腾讯云服务器和一台阿里云服务器,域名在阿里云备案,腾讯云打不开,直接拦截了


考虑到迁移成本有点高,不想迁移代码,所以,需要将域名指向阿里云服务器,通过反向代理到腾讯云服务器


域名 =>  阿里云服务器(服务器A) => 腾讯云服务器(服务器B)


www.example.com => 192.168.0.1 => 192.168.0.2


原来的配置

服务器A 192.168.0.1


server {

 listen 80;


 server_name www.example.com;


 # 转发到服务器B

 location / {

   proxy_pass         http://192.168.0.2:8000/;

   proxy_redirect     off;


   proxy_set_header    X-NginX-Proxy        true;

   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    $scheme;

}

}



服务器B 192.168.0.2


server {

   listen 8000;

   server_name localhost;


   index index.html index.htm index.php;

 

   # 管理后台

   location ^~ /admin {

     alias "/data/wwwroot/www.example.com";

     try_files $uri $uri/ /admin/index.html;

   }

}



遇到的状况1:

刚开始发现访问域名: https://www.example.com/admin,自动跳转到了: http://192.168.0.1:8000/admin


如果访问域名:https://www.example.com/admin/,没有跳转


此时能正常打开


解决方式:


添加参数


proxy_set_header    Host  $host;

1

遇到的状况2:

刚开始发现访问域名: https://www.example.com/admin,自动跳转到了: http://www.example.com:8000/admin


如果访问域名:https://www.example.com/admin/,没有跳转


发现响应头是这样的


GET https://www.example.com/admin


location: https://www.example.com:8000/admin/


解决方式


proxy_redirect     http://$host:8000/ /;

1

proxy_redirect的作用


proxy_redirect 该指令用来修改被代理服务器返回的响应头中的Location头域和Refresh头域。


最终版本

服务器A


server {

 listen 80;


 server_name www.example.com;


 # 转发到服务器B

 location / {

   proxy_pass         http://192.168.0.1:8000/;

   proxy_redirect     http://$host:8000/ /;


   proxy_set_header    X-NginX-Proxy        true;

   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_set_header    X-Forwarded-Proto    $scheme;


参考


nginx非80端口的301跳转,301跳转自动带上端口

————————————————

版权声明:本文为CSDN博主「彭世瑜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mouday/article/details/130623309

相关文章
|
4月前
|
应用服务中间件 网络安全 nginx
【Nginx】Nginx启动显示80端口占用问题的解决方案
【Nginx】Nginx启动显示80端口占用问题的解决方案
809 1
|
4月前
|
应用服务中间件 nginx
【报错】在nginx下启动,登录成功后页面不跳转
【报错】在nginx下启动,登录成功后页面不跳转
218 4
|
1月前
|
缓存 应用服务中间件 API
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
29 3
|
1月前
|
缓存 安全 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(二)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(二)
28 1
|
1月前
|
负载均衡 应用服务中间件 网络安全
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(一)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(一)
45 0
|
2月前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
3月前
|
应用服务中间件 nginx Windows
nginx实现网站url带参跳转 POST请求GET请求跳转
nginx实现网站url带参跳转 POST请求GET请求跳转
143 1
|
3月前
|
网络协议 安全 应用服务中间件
阿里云 网站https设置 sll申请与nginx跳转配置
阿里云 网站https设置 sll申请与nginx跳转配置
117 0
|
4月前
|
应用服务中间件 nginx
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
27 0