我正在尝试使用mysql的反向代理。由于某些原因,这不起作用(mysql-1.example.com指向带有MySQL的VM)。
upstream db {
server mysql-1.example.com:3306;
}
server {
listen 3306;
server_name mysql.example.com;
location / {
proxy_pass http://db;
}
}
有没有正确的方法呢?我尝试通过mysql连接,但是没有工作
答案 0 :(得分:5)
确保您的配置不在nginx.conf的http {}部分中。此配置应位于http {}。
之外stream {
upstream db {
server mysql-1.example.com:3306;
}
server {
listen 3306;
proxy_pass db;
}
}
答案 1 :(得分:2)
应该可以使用TCP反向代理从nginx 1.9开始。
您需要使用--with-stream
参数编译nginx。
然后,您可以在配置中添加stream
块,就像@samottenhoff在他的回答中所说的那样。
有关详细信息,请参阅https://www.nginx.com/resources/admin-guide/tcp-load-balancing/和http://nginx.org/en/docs/stream/ngx_stream_core_module.html。
答案 2 :(得分:0)
Nginx plus(付费)可以执行此操作。允许Docker容器直接访问主机数据库的另一种方法。