使用nginx反向代理,加载不到静态文件

发布于 2022-09-13 00:21:38 字数 1511 浏览 140 评论 0

10.240.218.91上部署了一个工具(类似jupyter一样),可以通过https://10.240.218.91/直接访问,并使用。

现在想通过https://10.240.218.90/vtune-o...这个地址,打开这个工具,也就是能获取https://10.240.218.91/上的内容,nginx配置如下:


location = /vtune-open {
    proxy_pass https://10.240.218.91/;
    proxy_set_header Host $host;
    client_max_body_size 5000m;
    error_page 502 =203 /50x.html;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

问题是https://10.240.218.91/的静态资源,比如https://10.240.218.91/socket.js现在变成了访问https://10.240.218.90/socket.js,结果就是not found。

我搜索了一圈,有人建议是只要包含js,css之类后缀的,都再次反向代理,全部指向10.240.218.91。

但是,因为本身https://10.240.218.90/下面,本身是一个完整的项目,有很多自己的静态资源,这样就使得https://10.240.218.90/无法正常访问了.

这种问题,能通过修改nginx配置做到吗?还是需要通过前端来弄呢?

nginx第一次配置,实在没办法了,救救孩子吧。。。

补:最后总结,就是想要实现,rewrite到https://10.240.218.91/,但使得浏览器地址保持https://10.240.218.90/vtune-o...不变。。。我搜了一圈,好像实现不了。。。唉

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2022-09-20 00:21:39

如果你访问的工具是个网页的话建议你不要用二级路径。因为网页中会再次请求js和css以及其他静态资源,而这些静态资源是不会带上二级路径/vtune-open/ 的

可以用端口的方式,比如你在90机器上开启8090端口,然后反向代理到91的机器

sever {
  listen 8090;
  location / {
    proxy_pass https://10.240.218.91;
    proxy_set_header Host $host;
    client_max_body_size 5000m;
    error_page 502 =203 /50x.html;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}
白首有我共你 2022-09-20 00:21:39

rewrite 只能解决你的一部分问题

静态资源不要杂糅在一起,按文件夹、或者归并在 对象存储 上,比较推荐

location = /aaa/ccc/ {
  rewrite ^/aaa/ccc/(.*) https://bbb/$1 permanent;
  break;
}
夏有森光若流苏 2022-09-20 00:21:39
server {                                                                                                                                                                                                           2     server_name   localhost;
    listen        80;
    error_page    500 502 503 504  /50x.html;
    location      / {
        root      html;
    }

    location /aaa/ {
        root /var/www/;
    }

    location /bbb/ccc/ {
        proxy_pass http://127.0.0.1:80/aaa/;
    }
}

要点在于 location /aaa/ { ... } 下的 root /var/www 是会拼接 location 里的路径的。比如说访问 http://your.domain.com/aaa/test1.txt,实际访问的文件就是 /var/www/aaa/test1.txt,而不是 /var/www/test1.txt

建议自己起一个 nginx 服务器多试试。

烦人精 2022-09-20 00:21:39

求问 楼主解决没呀? 同样的需求

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文