用于MySQL的Nginx反向代理

时间:2015-08-27 10:30:52

标签: mysql nginx

我正在尝试使用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连接,但是没有工作

3 个答案:

答案 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容器直接访问主机数据库的另一种方法。