【问题标题】:Nginx as TCP forward proxyNginx 作为 TCP 转发代理
【发布时间】:2018-05-29 07:29:03
【问题描述】:

我知道我可以这样使用:

stream {
    upstream ssh {
        server X.X.X.X:22;
    }

    server {
             listen 2222;
             proxy_pass    ssh;
    }
}

代理将传入的流量传递到端口 2222 到另一个 IP 的端口 22。

直截了当。但是,有没有办法创建一个接受最终目的地的主机名和端口作为参数的动态代理?

可以这样使用的东西:

proxy_hostname:8080?destination_hostname=example.com&destination_port=1111

ngx_stream_core_module 不接受 url 参数。 nginx 可以用作动态代理还是仅用于静态隧道?

我问这个是因为我需要一种方法来隐藏触发 php mysql 请求的机器的 IP。

mysqli_connect($hostname, ...)

现在我不能单独为 php 脚本指定代理,只能为整台机器指定代理。

【问题讨论】:

    标签: nginx proxy


    【解决方案1】:

    也许有一个小脚本和fcgiwrap:

    https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/

    fcgiwrap 调用一个 bash 脚本,您可以在其中将 URI 转换为您要调用的程序 (mysql),并将输出作为 Web 内容返回给 nginx。

    您还可以更改 nginx 的配置并重新加载服务。这样您就可以“动态”打开/转发端口。如果您将其公开,则非常不安全。

    【讨论】:

    • 我用--with-stream nginx 模块完成了一种NAT。端口->IP 地址¸。我真的很惊讶地发现代理一般不能与参数一起使用,而只能与特殊应用一起使用。
    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 2018-08-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 2021-06-28
    • 1970-01-01
    相关资源
    最近更新 更多