nginx 中不同用户下运行的多个 magento 站点

nginx 中不同用户下运行的多个 magento 站点

我编写了一个脚本,从我们的生产服务器复制 magento 文件和数据库,并尝试在我们的测试服务器的子域上对其进行配置。

每个测试站点都有: - 唯一的子域名 - 在 php-fpm 池中指定的唯一用户下运行

这是 php-fpm 池配置:

[test1]
user = test1
group = test1
listen = /run/php/php7.0-test1-fpm.sock
listen.owner = www-data
listen.group = www-data

因此我将按照以下方式在不同的用户下设置后续站点:

[test2]
user = test2
group = test2
listen = /run/php/php7.0-test2-fpm.sock
listen.owner = www-data
listen.group = www-data

当我尝试复制 magento nginx 服务器块(缩写版本粘贴在下面)时出现了问题:

 upstream fastcgi_backend {
     server  unix:/run/php-fpm/php-test1-fpm.sock;
 }

 server {

     listen 80;
     server_name test1.magento-dev.com;
     set $MAGE_ROOT /usr/share/nginx/html/test1;
     include /usr/share/nginx/html/test1/nginx.conf.sample;
 }

如果我像这样复制配置:

 upstream fastcgi_backend {
     server  unix:/run/php-fpm/php-test2-fpm.sock;
 }

 server {

     listen 80;
     server_name test2.magento-dev.com;
     set $MAGE_ROOT /usr/share/nginx/html/test2;
     include /usr/share/nginx/html/test2/nginx.conf.sample;
 }

我收到错误,因为 fastcgi_backend upsteam 已定义。我阅读了上游的 nginx 文档,它说它是一个服务器池,但我真的不明白这里为什么要这样指定上游来传递 php 请求。

我做错了什么?我应该如何在不同用户下运行的子域上设置多个 magento 站点?

我如何修复它:

我重命名了上游,但我没有意识到上游名称在 proxy_pass 中使用。您必须在 magento root 中的 nginx.conf.sample 中编辑 proxy_pass。

答案1

以下是我使用 Nginx 和 PHP 5.6 设置多个池的方法。我不使用路径,而是使用套接字。我对文件进行了轻微的编辑,使其更加通用,因此如果任何内容不匹配,请假设是拼写错误。

/etc/php-fpm-5.6.d/pool1

[pool1]
listen = 127.0.0.1:9000

/etc/php-fpm-5.6.d/pool2

[pool2]
listen = 127.0.0.1:9001

/etc/nginx/upstreams.conf

upstream php56-pool1 {
    server 127.0.0.1:9000;
}

upstream php56-pool2 {
    server 127.0.0.1:9001;
}

这是我的 Nginx 位置块的相关部分。

/etc/nginx/site1.conf

location ~ \.php$ {
    fastcgi_pass   php56-pool1;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
}

/etc/nginx/site2.conf

location ~ php$ {
    fastcgi_pass php56-pool2;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

相关内容