我的目标是配置上游,所以我可以使用每个项目/虚拟主机所需的任何php版本。
我试过了:
upstream php {
server php7-fpm-alpine:9000;
}
server {
listen 80;
server_name somesite.com;
root /www/somesite.com;
include /etc/nginx/nginx-wp-common.conf;
}
nginx-wp-common.conf有fastcgi_pass php;
我的设置适用于1个网站,但是一旦我开始为其他域添加更多虚拟主机,nginx会抱怨:
duplicate upstream "php"
正如您所看到的,我的目标是选择上游和DRY原则的模块化。
答案 0 :(得分:1)
如果每个PHP版本的上游名称(php)应该相同,那么你必须将上游块移动到外部文件中并包含你需要的文件。
〔实施例:
移动
upstream php {
server php7-fpm-alpine:9000;
}
到文件/etc/nginx/upstream-php7.conf
并在/etc/nginx/nginx-wp-common.conf中包含该文件
可选择创建具有不同名称的不同上游(如上游php7 {...})并在fastcgi_pass中使用所需的上游
编辑:
另一种选择:
定义不同的上游块:
upstream php5 {
server php5-fpm-alpine:9000;
}
upstream php7 {
server php7-fpm-alpine:9000;
}
修改您的服务器块,为不同的vhosts设置$ upstream的不同值
server {
listen 80;
server_name somesite.com;
root /www/somesite.com;
set $upstream php7;
include /etc/nginx/nginx-wp-common.conf;
}
server {
listen 80;
server_name othersite.com;
root /www/othersite.com;
set $upstream php5;
include /etc/nginx/nginx-wp-common.conf;
}
修改nginx-wp-common.conf
fastcgi_pass $upstream;