V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
DaguguJ
V2EX  ›  NGINX

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

  •  
  •   DaguguJ · 2022-01-21 15:13:03 +08:00 · 1786 次点击
    这是一个创建于 1068 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想实现一个功能: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 可以解决吗?
    3 条回复    2022-01-21 17:12:19 +08:00
    sujin190
        1
    sujin190  
       2022-01-21 15:23:07 +08:00
    页面引用都是绝对地址 nginx 好像也有自动替换的功能,好像是 content_filter 之类的吧,但是静态资源又可能再有引用啊,还有 ajax 之类的咋办,所以最好改成子域名了,实在不行,或者看看能不能读一下 refer 匹配一下然后做 rewrite
    DaguguJ
        2
    DaguguJ  
    OP
       2022-01-21 16:21:43 +08:00
    @sujin190 看了一下,似乎跟前端代码有关系,引入 js 时,都是 / 开头, 如果是 ./ 或者直接 填 uri 应该就可以解决
    dier
        3
    dier  
       2022-01-21 17:12:19 +08:00   ❤️ 1
    建议用域名为每个 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;
    }
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1174 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:23 · PVG 02:23 · LAX 10:23 · JFK 13:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.