我正在尝试将我的机器的 LAN IP 添加为“故障转移”位置,以便在主服务器出现问题时使用。
最近,我的主要服务器名称(即https://myserver.domain.com) 因 LetsEncrypt 证书问题而出现一些问题,因此在我的服务器上使用该域名运行的任何 URL 也会失败。我想要的是,如果 Nginx 检测到域名本身已关闭,则自动将其传递给机器的 IP。
我正在使用 DockerLinuxServer LetsEncrypt 容器,我尝试将 IP 添加到server_name
配置中的变量中,但重新启动容器后,尝试导航到时似乎没有任何变化https://myserver.domain.com(它仍然只是提供相同的错误页面而不是重定向到 IP)。
这是存在问题的当前配置:
server {
listen 443 ssl http2 default_server;
root /config/www;
index index.php index.html index.htm;
server_name myserver.* 192.168.0.194:3333;
# enable subfolder method reverse proxy confs
include /config/nginx/proxy-confs/*.subfolder.conf;
# Tell search engines not to crawl/add this domain
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
# all ssl related config moved to ssl.conf
include /config/nginx/ssl.conf;
# enable for ldap auth
#include /config/nginx/ldap.conf;
client_max_body_size 0;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
请特别注意此行;第二台服务器的 IP 是预期的故障转移 IP:
server_name myserver.* 192.168.0.194:3333;
另请注意:如果我直接https://192.168.0.194:3333
在浏览器中使用,它会顺利导航到目标页面,因此这一定是我正在尝试解决的 Nginx 配置方面的问题。这似乎是一个非常简单的问题,但我还不太熟悉 Nginx 配置的细微差别。
答案1
听起来你想让 nginx 重定向到另一个 URL,如果它确定域名已“关闭”,但此配置将根据初始域名已启动(即请求已到达 nginx)来处理请求。
你可以调查HTTP 负载平衡这也支持健康检查对于上游服务器:
监控正在发生的事务,并尝试恢复失败的连接。如果事务仍然无法恢复,则将服务器标记为不可用,并暂时停止向其发送请求,直到服务器再次被标记为活动状态。
upstream backend { server backend1.example.com; server backend2.example.com max_fails=3 fail_timeout=30s; }
但是,这将基于对上游服务器的失败请求而起作用,我不怀疑这是您的问题。您的问题的第 2 段需要澄清。您看到了什么样的证书问题,为什么无法修复它们?
根据目前提供的信息,这听起来不是在 nginx 级别完成的任务。