有一个后端服务,地址是 http://127.0.0.1:8888/web-test/
nginx 配置如下
location ^~ /web-test/ {
proxy_pass http://127.0.0.1:8888;
}
访问 http://ip:port/web-test/ 是正常的
但我想改写成访问 http://ip:port/test/ 替代访问 http://ip:port/web-test/
nginx 配置如下
location ^~ /test/ {
proxy_pass http://127.0.0.1:8888/web-test/;
}
重写后访问 http://ip:port/test/ 后出现问题,看到请求下面的 静态资源URL 都返回 404, 也就是说页面的静态资源发起的请求还是访问了原来的 /web-test 路由
http://127.0.0.1:8888/web-test/resource/...
http://127.0.0.1:8888/web-test/image/...
http://127.0.0.1:8888/web-test/system/...
http://127.0.0.1:8888/web-test/其他 URI/...
这种情况 nginx 要怎样配置重写规则?访问 http://ip:port/test/ 能返回正常的请求
解决办法:
1、
location ^~ /test/ {
proxy_pass http://127.0.0.1:8888/web-test/;
}
其他 静态资源URI 请求也 proxy_pass 到后端服务
location /web-test/resource/ {
proxy_pass http://127.0.0.1:8888;
}
location /web-test/image/ {
proxy_pass http://127.0.0.1:8888;
}
location /其他静态资源URI请求 {
proxy_pass http://127.0.0.1:8888;
}
这种方式要找到所有的 静态资源URL 请求,一个个重写
2、
直接修改后端服务路由为 http://127.0.0.1:8888/test/ ,规则变为
location ^~ /test/ {
proxy_pass http://127.0.0.1:8888;
}
就可以了
作者:awker
链接:https://www.jianshu.com/p/55bfbba45fed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
版权声明:本文为longwind8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。