V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
mostkia
V2EX  ›  NGINX

nginx 二级目录,反向代理内网某个端口的设备。出现 404 如何解决?

  •  
  •   mostkia · 2018-08-15 11:49:18 +08:00 · 4751 次点击
    这是一个创建于 2053 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题描述:nginx 服务器,二级目录 [比如 www.a.com/test/] 想反向代理内网某个端口的设备 [比如:192.168.1.101:8080 ] ,代理成功后,首页正常显示,但出现了大量 404 错误。

    Nginx 配置文件: location /test/ { proxy_pass http://192.168.1.101:8080/; }

    内网设备情况: html 文件是写入设备固件内的,无法修改,内部包含相对路径和绝对路径的资源引用。 比如有这样的引用: /css/style.css js/ui.js

    反代后,虚拟地址 www.a.com/test/ 等价于 192.168.1.101:8080 但 /test/style.css 这类绝对路径资源,却依旧会跑到根目录去读取,结果变成以下情况: www.a.com/css/style.css 导致找不到文件。出现 404 错误。

    请问有没有朋友碰到过类似的情况,是否有好的解决方案?

    6 条回复    2018-08-16 17:42:20 +08:00
    WordTian
        1
    WordTian  
       2018-08-15 12:06:41 +08:00 via Android
    因为会把 /test/这个路径传给内网设备。也许可以加个重写 url 的规则?
    neoska
        2
    neoska  
       2018-08-15 15:14:42 +08:00
    Nginx 配置文件:location /test/ { proxy_pass http://192.168.1.101:8080/; }
    试试去掉 8080 后面的 /
    popvlovs
        3
    popvlovs  
       2018-08-15 16:27:56 +08:00
    是不是命中了其他高优先级的 location 规则,比如
    location ~* \.(?:css|js)$
    dbolo123
        4
    dbolo123  
       2018-08-15 23:01:21 +08:00 via Android
    你的 html 引入的 css 路径写成了 /css/style.css ,是会这样的,改成 css/style.css 就行,不过可能会带来新的问题
    mostkia
        5
    mostkia  
    OP
       2018-08-16 17:40:01 +08:00
    @dbolo123 是的,但这个设备嵌入式设备,html 是写入在 flash 里面的,目前没法改。目前的临时方法,是将那些需要用到的绝对路径内容,也通过 nginx 代理到前端服务器上面,这样虽然能解决问题,但网站之间的独立性就受到影响了,基本就和初衷背离了,还不如整站全部反代了畅快。。希望有更好的办法吧。
    mostkia
        6
    mostkia  
    OP
       2018-08-16 17:42:20 +08:00
    @popvlovs 这个没有问题,我是新开了一台 nginx 站点来测试的,测试前去掉了所有不必要的规则。问题很明确,就是因为被代理的服务器内,html 有很多静态资源的绝对引用,导致代理到新站点后,不得不照顾和考虑到这些绝对引用,否则就会出现 404,的确是比较蛋疼的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2669 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:15 · PVG 23:15 · LAX 08:15 · JFK 11:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.