因此,我找到了 NginX 的官方教程,了解如何使用 NginX Plus 作为 MariaDB 集群的代理。但是,如果我使用标准 NginX(不是 Plus 版本)执行此操作,我会不断收到错误
nginx: [emerg] invalid URL prefix in /etc/nginx/conf.d/mariadb.conf:10
这是配置
upstream db {
server 10.0.0.101:3306;
server 10.0.0.102:3306;
server 10.0.0.103:3306;
}
server {
listen 3306;
location / {
proxy_pass db;
proxy_connect_timeout 1s;
}
}
我的问题是这是否仅在 NginX Plus 上可用,或者我做错了什么?我知道,通常我需要在 proxy_pass 中添加前缀,https://
但在这种情况下呢?
答案1
您需要删除这些location / {}
内容。这是针对 http 服务器的,不是针对普通 TCP 的。您需要将其包装成一个stream
块。
stream {
upstream db {
server 10.0.0.101:3306;
server 10.0.0.102:3306;
server 10.0.0.103:3306;
}
server {
listen 3306;
proxy_pass db;
proxy_connect_timeout 1s;
}
}
您可以在这里找到文档:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/