Nginx托管多个WordPress站点出现duplicate upstream错误如何解决?
错误原因
Nginx的upstream配置块属于全局作用域,同一名称的upstream在整套Nginx配置中仅允许定义一次。你在两个WordPress站点的独立配置文件中都重复定义了wp-php-handler,因此触发重复定义报错。
解决方案(推荐共用全局upstream)
步骤1:抽取upstream到全局配置
编辑Nginx主配置文件 /etc/nginx/nginx.conf,找到http配置块,将公共的upstream定义添加到块内:
http { # 原有http块下的所有配置保持不变,新增以下内容 upstream wp-php-handler { server unix:/var/run/php/php7.4-fpm.sock; } }
步骤2:删除站点配置中的重复upstream
修改所有WordPress站点的配置文件(包括第一个正常运行的站点、本次新增的test.wpsite.co.uk.conf),删除文件开头的upstream wp-php-handler { ... }整段内容,仅保留server块的原有配置即可,fastcgi_pass wp-php-handler这行不需要修改。
步骤3:验证配置并重载生效
执行配置校验命令,确认语法无误:
sudo nginx -t
返回test is successful后,重载Nginx配置生效:
sudo systemctl reload nginx
可选方案
如果你不需要复用upstream,也可以给每个站点的upstream设置唯一名称,比如第一个站点用wp-php-handler-site1,第二个用wp-php-handler-site2,同步修改对应fastcgi_pass的值即可,不过该方案冗余度高,不推荐。
内容的提问来源于stack exchange,提问作者user8758206
相关产品推荐
相关产品推荐

