我的目标是拥有可配置的上游,这样我就可以为每个项目/虚拟主机使用我需要的任何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原则的模块化。
如果每个版本的php的上游名称(php)都应该相同,那么您必须将上游块移动到外部文件中,并包含所需的块。
例如:
移动
upstream php {
server php7-fpm-alpine:9000;
}
到文件/etc/nginx/upstream-hp7.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;