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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 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

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
6天前
|
应用服务中间件 网络安全 nginx
【Nginx】Nginx启动显示80端口占用问题的解决方案
【Nginx】Nginx启动显示80端口占用问题的解决方案
168 1
|
6天前
|
应用服务中间件 nginx
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
14 0
|
6天前
|
前端开发 应用服务中间件 nginx
nginx中配置不输入端口(指定地址)访问项目的方法
nginx中配置不输入端口(指定地址)访问项目的方法
73 0
|
6天前
|
应用服务中间件 nginx Docker
docker安装nginx并暴露端口
【1月更文挑战第9天】docker安装nginx并暴露端口
170 0
|
9月前
|
应用服务中间件 开发工具 nginx
安装 Nginx 修改默认端口
用远程工具连接我们上次购买的机器,这里我要介绍一个知识点,博主使用的工具是 MobaXterm,这个工具有一个多操作的功能,在下图的位置可以开启多操作,然后连接你的服务器机子即可:
178 0
|
5月前
|
Java 应用服务中间件 Linux
linux安装jdk1.8 +nginx +springboot 实现通过nginx80转发8888端口访问springboot程序
linux安装jdk1.8 +nginx +springboot 实现通过nginx80转发8888端口访问springboot程序
109 0
|
7月前
|
搜索推荐 应用服务中间件 nginx
67分布式电商项目 - nginx基于端口配置虚拟主机
67分布式电商项目 - nginx基于端口配置虚拟主机
29 0
|
8月前
|
应用服务中间件 nginx
Nginx 代理80端口转443端口
Nginx 代理80端口转443端口
|
6天前
|
安全 Windows
服务器中如何检查端口是否开放
服务器中如何检查端口是否开放
|
5天前
|
存储 JSON JavaScript
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
14 0