我知道我可以使用这样的东西:
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 不接受网址参数。 nginx可以用作动态代理还是仅用于静态隧道?
我问这个是因为我需要一种方法来隐藏启动php mysql请求的机器的IP。
mysqli_connect($hostname, ...)
现在我不能仅为整个机器指定php脚本的代理。
答案 0 :(得分:1)
可能使用小脚本和fcgiwrap
:
https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/
fcgiwrap调用一个bash脚本,您可以在其中将URI转换为您要调用的程序(mysql),并将输出作为Web内容返回给nginx。
您还可以更改nginx的配置并重新加载服务。通过这种方式你可以动态地"开放/转发端口。如果你把它公之于众,那就太不安全了。