问题描述: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 错误。
请问有没有朋友碰到过类似的情况,是否有好的解决方案?
1
WordTian 2018-08-15 12:06:41 +08:00 via Android
因为会把 /test/这个路径传给内网设备。也许可以加个重写 url 的规则?
|
2
neoska 2018-08-15 15:14:42 +08:00
Nginx 配置文件:location /test/ { proxy_pass http://192.168.1.101:8080/; }
试试去掉 8080 后面的 / |
3
popvlovs 2018-08-15 16:27:56 +08:00
是不是命中了其他高优先级的 location 规则,比如
location ~* \.(?:css|js)$ |
4
dbolo123 2018-08-15 23:01:21 +08:00 via Android
你的 html 引入的 css 路径写成了 /css/style.css ,是会这样的,改成 css/style.css 就行,不过可能会带来新的问题
|