想问一下nginx获取不到后端css和js等文件该怎么办?

自己内网使用nginx打算像这样 ip/功能1,ip/功能2 这样来访问,但遇到了问题,像这样写

location /newapi {
        return 301 $scheme://$host/newapi/;
    }
    location /newapi/ {
        proxy_pass http://192.168.31.108:50002/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 90;
        proxy_ssl_server_name on;
    }

会遇到后端资源请求的url 404的问题,像这样写

    location / {
        proxy_pass http://192.168.31.108:50002/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 90;
        proxy_ssl_server_name on;
    }

就又能访问了,资源文件也都找的到了,请问佬们有什么办法解决第一种写法的时候资源文件找不到的问题吗?

2 个赞

nginx 二级路由问题
二级路由需要所部署的应用也要支持才行,不然应用还是会在 “/” 目录响应

建议用子域名,子路径不一定好用

同意楼上,建议子域名

完全正确
有些项目会使用/assets/xxxx.css,就会出现路径错误,比如go-bingai
虽然有解,但没必要
想偷懒可以参考

最后也确实使用了子域名,不过是内网挟持的子域名,反正我也不公布出来

不过,可以试试,在location /newapi/ 下面添加 试试,理论上,可以改写原来的路径,达到二级目录的效果.如果静态资源分布于多个目录,那么就要添加多次sub_filter

    sub_filter '"/static/' '"/newapi/static/';
    sub_filter '"/js/' '"/newapi/js/';
    sub_filter_once off;