向 Nginx 添加 LAN IP 的故障切换服务器?

向 Nginx 添加 LAN IP 的故障切换服务器?

我正在尝试将我的机器的 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 级别完成的任务。

相关内容