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

nginx 配置反代理 怎么让目标站点所有资源都走反代的流量呢

  •  
  •   rrZ2C · 2020-04-20 12:06:04 +08:00 · 2238 次点击
    这是一个创建于 1713 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的想法是通过反代访问一个局域网的网站

    目标站点里面把 css 地址写死成了 http://192.168.160.9.......css 所以现在可以通过 172.xx.xx.xx:8081 访问到首页,但是 css 文件依然是尝试去链接 192 这个目标 ip

    最后的效果是首页会卡很久最后给出一个没有 css 加持的 html 骨架

    目前我的配置比较简单是这样的,请问有没有什么办法让所有都过反代的流量呢

    server {
    listen 8081;
    server_name 127.0.0.1;#对外暴露为 172.xx.xx.xx
    location / { # 斜杠(/)代表根目录
    #root html; #代表 html 路径
    proxy_pass http://192.168.160.9;# //转发地址
    index index.html index.htm index.php *;
    }
    }
    
    第 1 条附言  ·  2020-04-20 15:02:02 +08:00
    折腾了一下模块,目前看起来可用了。

    步骤主要有:
    1.卸载 apt-get 安装的 nginx
    2. 手动安装 nginx (配置过程中带上 模块./configure --with-http_stub_status_module  --with-http_sub_module )
    3.修改下面的配置文件
    4.reload nginx

    注:需要加上这两个配置,否则 sudo nginx -t 显示 ok,但是实际过滤替换字符串功能会不起效
    proxy_set_header Accept-Encoding "";
    gzip off;


    最后附上配置
    ```
    server {
    listen 8081;
    server_name 用于转发的 ip;
    location / { # 斜杠(/)代表根目录
    #root html; #代表 html 路径
    proxy_pass http://192.168.160.9;#


    proxy_set_header Accept-Encoding "";

    gzip off;

    sub_filter http://192.168.160.9 http://用于转发的 ip;
    sub_filter_types *;
    sub_filter_once off;
    }
    }
    ```
    6 条回复    2020-04-20 16:08:04 +08:00
    abcbuzhiming
        1
    abcbuzhiming  
       2020-04-20 12:14:04 +08:00   ❤️ 1
    如果要实现你的功能,需要 nginx 在向前端输出 css 的时候,批量的把 css 里的这个 ip 给替换掉才行,否则一旦这个 css 到了前端,前端再次请求的时候,是请求 192 这个地址,根本就不过你的 Nginx,nginx 做不到任何事情。
    nginx 能不能替换资源中的内容,可能有插件能支持吧,你找找看
    Tink
        2
    Tink  
       2020-04-20 12:15:04 +08:00 via iPhone   ❤️ 1
    ngx_http_substitutions_filter_module
    dangyuluo
        3
    dangyuluo  
       2020-04-20 13:50:00 +08:00   ❤️ 1
    装一个 nginx 插件,如果你不嫌麻烦的话

    https://nginx.org/en/docs/njs/
    defunct9
        4
    defunct9  
       2020-04-20 14:50:19 +08:00
    开 ssh,让我上去试试
    rrZ2C
        5
    rrZ2C  
    OP
       2020-04-20 15:04:18 +08:00
    @abcbuzhiming
    @Tink
    @dangyuluo
    上相应的模块 配置 sub_filter_types *; 提交,目前看起来 ok 多谢哈

    @defunct9 192.168 的那个 IP 请使劲 ssh
    defunct9
        6
    defunct9  
       2020-04-20 16:08:04 +08:00   ❤️ 1
    @rrZ2C 自己解决了最好,那就不用 ssh 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1655 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:46 · PVG 00:46 · LAX 08:46 · JFK 11:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.