我有一个带有MySQL和Meilisearch的debian服务器,我想使用Nginx作为未来负载平衡的反向代理,并具有TLS安全性。
我正在跟随Meilisearch's Documentation设置Nginx与Meilisearch,并让加密成功,但他们强制Nginx代理所有的端口7700,我想代理到3306为MySQL,7700为Meilisearch,80为一个错误页面或备用web服务器。但是在修改/etc/nginx/nginx.conf
之后,网站重新加载的次数太多了。
这是我在/etc/nginx/nginx.conf
上尝试的配置
user www-data;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
stream {
upstream mysql {
server 127.0.0.1:3306;
}
upstream meilisearch {
server 127.0.0.1:7700;
}
server {
listen 6666;
proxy_pass mysql;
}
server {
listen 9999;
proxy_pass meilisearch;
}
}
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
return 301 https://\$server_name$request_uri;
}
server {
server_name example.com;
location / {
proxy_pass http://127.0.0.1:80;
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
# ssl_certificate managed by Certbot
# ssl_certificate_key managed by Certbot
}
}
唯一的区别是我的域替换了example.com,该域已经设置为重定向到服务器ip。
发布于 2020-09-17 22:48:13
正如ippi所指出的,在这种特殊情况下,没有必要反向代理MySQL。
我按照Meilisearch文档的建议使用了proxy_pass http://127.0.0.1:7700
。
对于未来的DB负载平衡,我会使用MySQL集群,并在另一个代理所有东西的Nginx实现上向他们指出。HTTPS到web服务器,DB访问集群列表等)。
此外,在这种特殊情况下,我实际上并不需要到数据库的加密连接,但如果我需要它们,我会使用MySQL中的自签名证书和网站的CA证书,因为我的前端与一个“中央”Nginx代理进行通信,该代理可以加密后端服务器和代理之间的通信。
如果我真的想为MySQL使用“让我们加密证书”,我已经找到了一个很好的recipe,但我没有复制粘贴证书(这很痛苦),而是将“让我们加密证书”目录挂载到MySQL中,并使用chown将权限更改为600。但话又说回来,这可能是不好的做法,最好像它自己的文档所建议的那样,对MySQL使用自签名证书。
https://stackoverflow.com/questions/63930789
复制相似问题