当前位置: 首页 > news >正文

nginx 丢失端口问题

问题描述:

我使用docker部署的nginx服务,nginx内部是80端口,映射到宿主机上的5001端口上,nginx的内部配置如下:

upstream upstream
{
        server  xx.xx.xx.xx:8080;
}

server {
    listen       80;
    server_name  xx.xx.xx.xx;


    #charset koi8-r;

    #for server access logs.
    if ( $time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" ) {
	set $year $1;
	set $month $2;
	set $day $3;
	set $hour $4;
	set $minutes $5;
	set $seconds $6;
    }
    proxy_http_version 1.1;
    proxy_read_timeout 10s;
    proxy_connect_timeout 5s;

    access_log  logs/${server_name}_access_log.$year-$month-$day main;
    access_log logs/status_log.$year-$month-$day mini;

    location /page{
        gzip_static on;
        alias /cloud/data/page/build/;
        try_files $uri $uri/ /index.html =404;
        index index.html;
        #manifest.json;
        expires -1s;
        error_page 404 /console/index.html;
    }

   

   location ~ ^/(api)/ {
        proxy_pass http://upstream;
        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 From apprelease;
    }

   

   


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

当我在浏览器访问http://xx.xx.xx.xx:5001/page时,浏览器地址会变为http://xx.xx.xx.xx/page/

即把端口号给丢了。

问题原因:

发现是try_file的原因,try_file匹配到之后会执行重定向操作,nginx重定向是默认采用绝对路径,此时重定向是发生在在容器中,所以重定向返回的地址为 nginx的端口即80端口,我们看到的现象就是端口丢失了。

问题解决:

禁用绝对路径重定向,此时将会使用相对路径重定向。

即在server节点下加入

absolute_redirect   off;

如下图所示;

 

相关文章:

  • centos 安装docker及docker-compose
  • 多个docker-compose文件共享一个网络
  • idea 远程调试springboot项目
  • spring-cloud-consul配置中心获取指定路径下的配置
  • 将red5项目部署到tomcat下,并且red5项目嵌入到J2EE项目中
  • mysql 本机登录错误提示及解决方法
  • 禅道程序员的10条原则
  • 完全删除MYSQL:windows 7下完全删除MYSQL,windows xp 下完全删除MYSQL
  • 小故事大人生 -----七个顶级心理寓言
  • windows 7下mysql5.5.18主从同步设置
  • Flex+Java项目,Myeclipse环境下“Target runtime Apache Tomcat v6.0 is not defined ” 错误解决方法
  • Slave_SQL_Running: No mysql同步故障解决方法
  • 通过基站信息(LAC,CID)调用google的json接口获取地理位置信息的Java代码
  • 笔记本电脑改装成WiFi热点
  • vb.net中关于byval和byref的使用
  • [LeetCode] Wiggle Sort
  • 【Amaple教程】5. 插件
  • 【React系列】如何构建React应用程序
  • angular组件开发
  • Fundebug计费标准解释:事件数是如何定义的?
  • HashMap剖析之内部结构
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • nginx 配置多 域名 + 多 https
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Vue.js 移动端适配之 vw 解决方案
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从0实现一个tiny react(三)生命周期
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 简单实现一个textarea自适应高度
  • 使用权重正则化较少模型过拟合
  • 怎样选择前端框架
  • 仓管云——企业云erp功能有哪些?
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • (四) Graphivz 颜色选择
  • (五)Python 垃圾回收机制
  • ..回顾17,展望18
  • .NET Standard 的管理策略
  • .Net 代码性能 - (1)
  • .Net 路由处理厉害了
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net反编译工具
  • .sdf和.msp文件读取
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired多个相同类型bean装配问题
  • @EventListener注解使用说明
  • @Repository 注解
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ 蓝桥杯Web真题 ]-布局切换
  • []FET-430SIM508 研究日志 11.3.31
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [CTSC2014]企鹅QQ