



















这是一个创建于 521 天前的主题,其中的信息可能已经有所发展或是发生改变。
我现在有三个容器开着,路由器开放了三个端口, 我想能不能开放一个端口用拼接 url 方式转发到不同的内网服务下,
server {
listen 10086 ssl;
server_name abc.com;
location / {
proxy_pass http://192.168.0.100:10086;
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;
}
location /book {
proxy_pass http://192.168.0.100:10010;
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;
}
}
类似这样配置了 nginx 之后 直接访问 abc.com:10086 端口访问全部没问题 但是转发的第二个端口
abc.com:10086/book
并不能成功转发到 192.168.0.100:10010 浏览器调试发现使用 abc.com:10086/book 发出的请求中 css js 之类的都是
abc.com:10086/static/?.css
abc.com:10086/static/?.js
而并没有到
abc.com:10086/book/static/?.css
abc.com:10086/book/static/?.js
状态都是 404 了 问了一下 gpt 说是需要找到真实的静态资源地址,这个容器的话怎么搞呢?还是说我的 nginx 需要配置其他配置项才可以呢,求大佬们帮助
第 1 条附言 · 2025 年 1 月 9 日
多谢各位大佬解答,目前因为是前后端资源都不能很好的子u给,(都是docker容器)看了一下大佬们的解答,受用无穷
最后我的解决方案
server {
listen 3000 ssl;
server_name name.com www.name.com;
location / {
proxy_pass http://192.168.0.100:10086;
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;
}
}
server {
listen 3000 ssl;
server_name book.name.com www.book.name.com;
location / {
client_max_body_size 10M;
proxy_pass http://192.168.0.100:10010;
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;
}
}
1 ssiitotoo 2025 年 1 月 9 日要实现所有静态都走 book 你需要更改静态入口文件的路劲添加 book 要不然 默认都是请求/ |
2 doveyoung 2025 年 1 月 9 日如果你的 192.168.0.100:10010 能识别 192.168.0.100:10010/book 这个路径,可以试试修改 nginx 的 proxy_pass 配置 我看你的 /book 还加了 proxy_set_header ,这样会让你后端真正的服务接收到 {host: abc.com} ,不知道这符不符合你的期望 |
3 jupiterISme 2025 年 1 月 9 日location /book { |
4 sagaxu 2025 年 1 月 9 日你的网站支持部署到非根路径吗?网站不支持也是白搭。 |
5 zizon 2025 年 1 月 9 日说明你 你要么把页面的资源路径也写成 book/static/?.css |
7 oouz 2025 年 1 月 9 日是不是需要换一下 /book 和 / 配置的位置,把/book 换到 / 的前面去。 把这两个换一下位置试试? |
8 jadeborner 2025 年 1 月 9 日前端 publicpath 加上 book |
9 ltaoo1o 2025 年 1 月 9 日上面的人已经说到根本原因了,静态网站需要做一些配置,如果是 `vite` 项目, `base` 需要配置为 `/book`。 我刚好有一个这种项目,我分别有 `/pc`、`/mobile` 两个网站,通过 `www.domain.com/pc` 和 `www.domian.com/mobile` 访问,我的目录结构如下 ``` nginx 配置 ``` 前端我用了 `browser history`,这样可以保证刷新时不会 404 。 我是问 GPT 实现的,具体原理我也不懂。 |
10 JayZXu 2025 年 1 月 9 日只用 nginx 是无法实现这个分流的 前端是自己写的,可以通过修改 publicpath 或者 base 参数重新打包 不是自己写的,要么通过域名在 nginx 做 server_name 分流,要么本地写 host 实现主机名访问再通过 nginx 的 server_name 分流 |
12 wxd21020 2025 年 1 月 9 日兄弟,上 lucky ,搜一下 lucky |
13 partner666 2025 年 1 月 9 日你想实现的效果需要在前端改,或者这样? location /book { |
14 R77 2025 年 1 月 9 日location ~ ^/(js|css|images)/ { 可以试试,类似的 |
16 AndreasG 2025 年 1 月 9 日@R77 我试了一下静态地址请求拼接的方式,静态文件都加载成功了,您这个方式获取静态资源是完全可行的,但是由于还有后端接口貌似不通,最后使用了二级域名解决了这个问题,多谢老哥解答 |
25 sparkssssssss 2025 年 1 月 9 日proxy_redirect http://192.168.0.100:10086/ /book/; 试试呢 |
26 sparkssssssss 2025 年 1 月 9 日location /book { |
27 lovelylain 2025 年 1 月 9 日 via Android@coolloves proxy_redirect 解决的只是 header location 跳转,网页里用了绝对路径还是会有问题的,能重新构建网页的话可以改为使用相对路径,不能的话用 sub_filter 替换运气好也能搞定,但是很麻烦 |
28 franklinyu 2025 年 1 月 11 日 via iPhone代码不好改的话,#6 提到的子域名确实是最简单的方案了 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。