nginx 实现动态代理到服务器出现问题

2022-01-21 15:13:03 +08:00
 DaguguJ
想实现一个功能:ip1 ip2 ip3
http://ip1/ip2/ 可以访问 ip2 的服务
http://ip1/ip3/ 可以访问 ip3 的服务

upstream ip2 {
server ip2;
}
upstream ip3 {
server ip3;
}
server {
listen 80;
location ~ ^/ip2/ {
proxy_pass http://ip2;
}
location ~ ^/ip3/ {
proxy_pass http://ip3;
}
}
发现请求到 index.html 文件正常获取到,但是加载的时候 index.html 引用的 js css 都找不到,因为都访问到 ip1 下,这种问题,nginx 可以解决吗?
1582 次点击
所在节点    NGINX
3 条回复
sujin190
2022-01-21 15:23:07 +08:00
页面引用都是绝对地址 nginx 好像也有自动替换的功能,好像是 content_filter 之类的吧,但是静态资源又可能再有引用啊,还有 ajax 之类的咋办,所以最好改成子域名了,实在不行,或者看看能不能读一下 refer 匹配一下然后做 rewrite
DaguguJ
2022-01-21 16:21:43 +08:00
@sujin190 看了一下,似乎跟前端代码有关系,引入 js 时,都是 / 开头, 如果是 ./ 或者直接 填 uri 应该就可以解决
dier
2022-01-21 17:12:19 +08:00
建议用域名为每个 IP 配置一个单独的 server 。js css 图片文件很多都是写的相对路径,所以会出现访问时跳到其它页面的情况

```conf
server {
server_name ip2.domain.com;
listen 80;
location / {
proxy_pass http://ip2;
}
}

server {
server_name ip3.domain.com;
listen 80;
location / {
proxy_pass http://ip3;
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX