相请教一个关于 nginx 的反代的问题

2022-07-13 10:35:25 +08:00
 afmore2021

各位大佬 ,最近在处理一个 nginx 的反代的问题,一直没有搞定,想请教一下大家

我的 nginx 在布署在路由器后面,由于国情,443, 80 端口不能使用,所以在路由防火墙上做了端口转发。比如:

1443-->443,走 https

我证书都全部配置好了。外网用 https://www.domain.com:1443 也可以正常访问。 这时我需要反代我另一个容器 heimdall 的网页,比如: https://192.168.1.1 , nginx 的 config 也做好了。但目前遇到的问题网页的部分内容反代成功,但其它的部分不成功。不成功的原因是反代后端口 1443 丢失。 比如: https://www.domain.com:1443/css/的路径变成了 https://www.domain.com/css,缺少了端口号,这样网页里有部分内容不能加载。

查了一下 google,可能原因是要设置 proxy header, 我试了很多方法,比如添加:

proxy_set_header Host $http_host;

proxy_set_header Host www.domain.com:1443; 都一样,不能解决。

请指教 ps:只有防火墙对外的端口是非标准的 1443,之后的所有端口都是 443.

980 次点击
所在节点    问与答
5 条回复
AoEiuV020CN
2022-07-13 10:57:29 +08:00
没明白,建议把 nginx 配置贴出来看看,

不过我感觉不是 nginx 问题,会不会是网页代码问题,压根就没请求到正确的资源,请求的资源地址压根就和网页地址不是一个服务器和端口,
AoEiuV020CN
2022-07-13 11:00:27 +08:00
@AoEiuV020CN #1 比如你现在网站首页地址是 https://www.domain.com:1443 但是网站应用认为首页地址是 https://www.domain.com 于是请求的资源地址都是使用后者拼接的,就丢失了端口号,
这种问题在现代 web 框架好像挺常见的,看看网站应用源码有没指定首页地址啥的功能,
adoal
2022-07-13 11:17:33 +08:00
被反代的业务网站必须具备“意识到自己是在反代后面所以要从反代传来的 header 或者配置文件确定自己的域名、端口和协议”的能力才行啊。这个大部分框架都支持,但是默认不一定开启,还是得看框架的文档来配置。
wzm5201314
2022-07-13 17:35:02 +08:00
你这种可以在服务中配置
location /static/ {
proxy_pass http://host:8084/static/;
}
通过这种方式把静态资源给重定向到指定的端口去访问就可以了
afmore2021
2022-07-18 17:14:36 +08:00
@adoal 谢谢大佬,应是应用(容器)代码问题。通过修改容器中的一个配置文件来强行指定了 URL 及端口,目前可以临时用了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX