nginx 丢失端口问题
2021/7/28 7:07:46
本文主要是介绍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;
如下图所示;
这篇关于nginx 丢失端口问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享
- 2024-08-14nginx 判断地址有/statics/的路径,指向到/home/html/statics/目录-icode9专业技术文章分享