mysql客户端连接nginx出现错误10060

mysql客户端连接nginx出现错误10060

我使用 nginx 来连接 mysql

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;
upstream stream_backend {
        server xx.xx.xx.4:3306;
        server xx.xx.xx.1:3306;
    }
   server {
        listen     3307;
        server_name xx.xx.xx.1;
    }
}

我使用 mysql 客户端连接到 xx.xx.xx.1:3307 时报告错误

使用 root 用户连接到 xx.xx.xx.1:3307 的 mysql 失败

在此处输入图片描述

nginx 日志是 在此处输入图片描述

答案1

在你的 http 部分外面放一些类似这样的内容:

http {
[...]
}

stream {

    upstream stream_backend {
       server ip_mysql1:3306;
       server ip_mysql2:3306;
    }

    server {
       listen ip_nginx:3307;
            proxy_pass stream_backend;
    }
}

你可以找到很多选择那里改善代理的行为方式。

答案2

原因在于您正在使用上游指令来尝试对 MYSQL 进行负载平衡(应该基于 TCP)。

本指南应该可以帮助您:-

https://www.nginx.com/resources/admin-guide/tcp-load-balancing/

您需要在 stream { } 块内写入上游。

相关内容