Magento 2在子文件夹Nginx



在Ubuntu上使用Nginx 1.4.6,我试图配置Magento 2在子文件夹中运行。

我已经在/var/www中有一些其他项目,设置如下:

server {
    server_name website.com;
    root /var/www/;
    location /p1/ {
        # config
    }
    location /p2/ {
        # config
    }
}

但是现在,我的Magento安装位于/mnt/storage/demo/demo-magento2,我找不到一个方法将它包含在这个服务器块中。

我尝试使用Nginx (https://github.com/magento/magento2/wiki/Nginx-Configuration-Settings-and-Environment-Variables)的样例配置。因此,我将这个位置块添加到我的服务器块配置中:

location /demos/demo-magento2/ {
  set $MAGE_ROOT /mnt/storage/demo-magento2/;
  set $MAGE_MODE developers;
  include /mnt/storage/demo-magento2/nginx.conf.sample;
}

Nginx一直返回这个错误:

2015/10/19 18:15:04 [emerg] 6250#0: location "/setup" is outside location "/demos/demo-magento2/" in /mnt/storage/demo-magento2/nginx.conf.sample:27

我对Nginx很陌生,所以有人能告诉我怎么弄清楚吗?

Nginx的配置是挑剔的指令的位置;因为Magento的nginx.conf.sample包含了'location'指令,所以它必须包含在' server '指令中。看一下示例配置顶部注释掉的部分;它大致显示了主配置文件应该是什么样子。

你应该有一个像这样的根配置文件:

upstream fastcgi_backend {
        server unix:/var/run/php5-fpm.sock;
}
server {
    listen 80;
    server_name server.dev;
    set $MAGE_ROOT /path/to/magento2;
    set $MAGE_MODE developer;
    include /path/to/magento2/nginx.conf.sample;
 }

如果你使用的是典型的Ubuntu-nginx设置,你会希望这个文件在/etc/nginx/sites-available目录下,为了启用它,你需要从sites-enabled目录创建一个符号链接到那个文件。

正如@Memes指出的那样,我在位置块中犯了一个错误:

location /demos/demo-magento2/ {
  set $MAGE_ROOT /mnt/storage/demo-magento2/;
  set $MAGE_MODE developers;
  include /mnt/storage/demo-magento2/nginx.conf.sample;
}
应:

location /demos/demo-magento2/ {
  set $MAGE_ROOT /mnt/storage/demo/demo-magento2/;
  set $MAGE_MODE developers;
  include /mnt/storage/demo/demo-magento2/nginx.conf.sample;
}
关键是我在路径中丢失了demo/子文件夹。nginx错误实际上是不言自明的!

最新更新