V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
afmore2021
V2EX  ›  问与答

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

  •  
  •   afmore2021 · 2022-07-13 10:35:25 +08:00 · 1145 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬 ,最近在处理一个 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.

    5 条回复    2022-07-18 17:14:36 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       2022-07-13 10:57:29 +08:00
    没明白,建议把 nginx 配置贴出来看看,

    不过我感觉不是 nginx 问题,会不会是网页代码问题,压根就没请求到正确的资源,请求的资源地址压根就和网页地址不是一个服务器和端口,
    AoEiuV020CN
        2
    AoEiuV020CN  
       2022-07-13 11:00:27 +08:00
    @AoEiuV020CN #1 比如你现在网站首页地址是 https://www.domain.com:1443 但是网站应用认为首页地址是 https://www.domain.com 于是请求的资源地址都是使用后者拼接的,就丢失了端口号,
    这种问题在现代 web 框架好像挺常见的,看看网站应用源码有没指定首页地址啥的功能,
    adoal
        3
    adoal  
       2022-07-13 11:17:33 +08:00
    被反代的业务网站必须具备“意识到自己是在反代后面所以要从反代传来的 header 或者配置文件确定自己的域名、端口和协议”的能力才行啊。这个大部分框架都支持,但是默认不一定开启,还是得看框架的文档来配置。
    wzm5201314
        4
    wzm5201314  
       2022-07-13 17:35:02 +08:00
    你这种可以在服务中配置
    location /static/ {
    proxy_pass http://host:8084/static/;
    }
    通过这种方式把静态资源给重定向到指定的端口去访问就可以了
    afmore2021
        5
    afmore2021  
    OP
       2022-07-18 17:14:36 +08:00
    @adoal 谢谢大佬,应是应用(容器)代码问题。通过修改容器中的一个配置文件来强行指定了 URL 及端口,目前可以临时用了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1765 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.