Magento 2在子文件夹Nginx中

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

我已经在/var/www有一些其他的projets,它们是这样设置的:

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

但是现在,我的Magento安装位于/mnt/storage/demo/demo-magento2 ,我无法find将其包含在此服务器块中的方法。

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

 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目录下,并启用它,您可以从站点创建该文件的符号链接,启用目录。

正如@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错误实际上是不言自明的!