Nginx使用反向代理重定向次数过多
我有一个带有MySQL和Meilisearch的debian服务器,我想使用Nginx作为未来负载平衡的反向代理,并具有TLS安全性 我正在使用Meilisearch设置Nginx,并让Encrypt成功,但他们强制Nginx将所有内容代理到端口7700,我想代理到3306(MySQL)、7700(Meilisearch)和80(错误页面或回退web服务器)。但是在修改Nginx使用反向代理重定向次数过多,nginx,reverse-proxy,nginx-reverse-proxy,Nginx,Reverse Proxy,Nginx Reverse Proxy,我有一个带有MySQL和Meilisearch的debian服务器,我想使用Nginx作为未来负载平衡的反向代理,并具有TLS安全性 我正在使用Meilisearch设置Nginx,并让Encrypt成功,但他们强制Nginx将所有内容代理到端口7700,我想代理到3306(MySQL)、7700(Meilisearch)和80(错误页面或回退web服务器)。但是在修改/etc/nginx/nginx.conf之后,网站重新加载的次数太多 这是我在/etc/nginx/nginx.conf中尝试
/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被my domain替换,my domain已经被设置为重定向到服务器ip。如前所述,在这种特殊情况下,没有必要反转代理MySQL
我用了proxy\u通行证http://127.0.0.1:7700
如Meilisearch文档所示
对于未来的数据库负载平衡,我将使用MySQL集群,并在另一个代理一切的Nginx实现中向它们指出(例如,HTTPS到web服务器,DB访问集群列表等)
此外,在这种特殊情况下,我实际上不需要到DB的加密连接,但如果我需要,我会在MySQL中使用自签名证书,并为网站使用CA证书,因为我的前端与“中央”Nginx代理通信,该代理可以加密后端服务器和代理之间的通信
如果我真的想使用MySQL的Let's Encrypt证书,我已经找到了一个好方法
,但我不想复制粘贴证书(这很痛苦),而是将Let's Encrypt certificates目录装载到MySQL目录中,并使用chown将权限更改为600。但同样,这可能是一种不好的做法,最好使用MySQL的自签名证书,正如它自己的文档所建议的那样。正如所指出的,在这种特殊情况下,没有必要反转代理MySQL
我用了proxy\u通行证http://127.0.0.1:7700
如Meilisearch文档所示
对于未来的数据库负载平衡,我将使用MySQL集群,并在另一个代理一切的Nginx实现中向它们指出(例如,HTTPS到web服务器,DB访问集群列表等)
此外,在这种特殊情况下,我实际上不需要到DB的加密连接,但如果我需要,我会在MySQL中使用自签名证书,并为网站使用CA证书,因为我的前端与“中央”Nginx代理通信,该代理可以加密后端服务器和代理之间的通信
如果我真的想使用MySQL的Let's Encrypt证书,我已经找到了一个好方法
,但我不想复制粘贴证书(这很痛苦),而是将Let's Encrypt certificates目录装载到MySQL目录中,并使用chown将权限更改为600。但是,同样,这可能是一种不好的做法,最好使用MySQL的自签名证书,正如它自己的文档所建议的那样。您很可能想要代理\u passhttp://127.0.0.1:7700;代码>如文档中所示,否则它会将您传送到listen 80服务器
,该服务器将重定向到您的listen 443服务器
,一轮又一轮地导致错误。如果希望在80处出现错误,请使用return400
而不是301,或者使用位置/{try_files$uri error.html}
更具样式化的东西。MySql与所有这些无关,因为它不使用443http://127.0.0.1:7700;代码>如文档中所示,否则它会将您传送到listen 80服务器
,该服务器将重定向到您的listen 443服务器
,一轮又一轮地导致错误。如果希望在80处出现错误,请使用return400
而不是301,或者使用位置/{try_files$uri error.html}
更具样式化的东西。MySql与所有这些无关,因为它不使用443。