【问题标题】:http_sub_module in nginx does not seem to worknginx 中的 http_sub_module 似乎不起作用
【发布时间】:2015-11-24 08:08:42
【问题描述】:

我正在尝试设置反向代理以通过 http-ssl (https) 提供本地 http 服务。配置是这样设置的:

  • 后端服务器监听 127.0.0.1:8081,因此只接收来自 localhost 的连接。它提供所有网页而无需 (!) 压缩。
  • 前端服务器 (= nginx) 侦听端口 83 并提供从 127.0.0.1:8081 获取的数据

到目前为止,这在 nginx 中运行良好。不幸的是,后端服务器在其服务的网页中提供了一些绝对 URL,例如“http://127.0.0.1:8081/....”。而且这种行为不能(!)改变。因此,默认情况下,nginx 服务器按原样提供包含对 127.0.0.1 的无效引用的页面 - 从客户端的角度来看这是错误的。

使用 sub_filter 规则,所服务的网页应在网页内进行字符串替换。由于我无法修改后端服务器,因此 nginx 服务器应将 http://127.0.0.1 替换为更合适的 URL。但这行不通。事实上,似乎根本没有执行任何字符串替换。我尝试替换的任何字符串 - 交付给客户端的网页保持不变。

我的nginx配置是这样的:

server {
    listen 83 default_server;
    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:8081;

        sub_filter Test TEST;
        sub_filter_once on;
        sub_filter_types text/xml text/css text/javascript;
    }
}

注意:在此配置中,我尝试将“Test”替换为“TEST”(但无济于事)。 “测试”是在后端 Web 服务器提供的网页中随机选择的字符串。我在这里用作测试对象。真正的替换应该是“http://127.0.0.1:8081/”到“/”之后,但即使是这个简单的测试也没有成功。

另一个注意事项:在最终配置中,nginx 服务器应该使用 https 提供数据。对于测试,上面测试和提供的配置不包括 SSL 配置。

nginx -V 告诉我 nginx 已经用相关模块 (--with-http_sub_module) 编译,所以一切都应该工作,不是吗?

我可能做错了什么,但不幸的是我无法弄清楚我在这里做错了什么。我什至在 stackoverflow 上找到了两个答案,即以下几个,但没有一个起作用:

你能帮忙吗?提前感谢您的回答。

【问题讨论】:

  • ngx_http_sub_module 模块是一个过滤器,它通过将一个指定的字符串替换为另一个来修改响应。你需要的是复习……打破;然后 proxy_pass nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass serverfault.com/questions/379675/…
  • 根据您的解释,http_sub_module 应该完全符合我的预期:在交付前修改内容。但它没有:无论我提供什么样的 RegEx,内容都不会被修改。尽管如此,还是感谢您提到“重写”:在我的谷歌搜索中,我没有遇到任何类似的配置可能性。如果“重写”解决了这个问题,我会尽快尝试这个选项,然后提供反馈。

标签: nginx reverse-proxy


【解决方案1】:

你好!

你解决了这个问题吗?我认为您需要的是 http_realip 模块。

来自 nginx.org 文档:

ngx_http_realip_module 模块用于将客户端地址更改为指定标头字段中发送的地址。 默认情况下不构建此模块,应使用 --with-http_realip_module 配置参数启用。

当您的 NGINX 服务器位于 L7 负载平衡器或其他在 HTTP 标头中传递客户端 IP 地址的设备之后时,需要此模块。

这可能会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2016-02-01
    • 2020-09-23
    • 2010-12-05
    • 2011-06-14
    相关资源
    最近更新 更多