nginx 作为具有故障转移功能的反向代理

nginx 作为具有故障转移功能的反向代理

我正在运行一个 wordpress 网站,我的前端由 Nginx 管理。Nginx 将所有动态内容转发到 varnish,varnish 随后转发到 apache。现在我想这样配置,如果 varnish 停止/失败,nginx 将请求直接转发到 apache。我该怎么做。

答案1

可以通过负载平衡方法来实现。Nginx负载平衡使用模块。最简单的方法是在位于 的文件upstream中的 http 字段内添加上游块。nginx.conf/etc/nginx/

http {

   upstream backend {

      server 127.0.0.1:8081; 
      server 127.0.0.1:8088;
    # server Backend_Server_IP;  
   } 
...

}

在这里我已经考虑过localhost正在运行port 8081阿帕奇localhost正在运行port 8088。这里不需要指定 Varnish 的 IP 地址和端口号,但是为了以防万一我还是添加了它。

此后,您只需编辑位于目录中的站点设置即可/etc/nginx/sites-available/。只需打开您的站点文件并在其中添加以下几行即可。

location / {
     # First attempt to serve request as file, then
     # as directory, then fall back to displaying a 404.
     try_files $uri $uri/ =404;

     proxy_pass http://backend;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
}

现在保存它,关闭它,然后通过输入以下内容检查 nginx 配置文件是否存在语法错误:

   sudo nginx -t

如果语法正确,请重新启动 nginx 服务。

sudo service nginx restart

它会像魔法一样工作。您可以通过停止 varnish 服务来检查它,然后访问您的站点。nginx将绕过如果 Varnish 服务失败,它会将请求转发给阿帕奇:-)

相关内容