2015-10-19 87 views
4

在Ubuntu上使用Nginx 1.4.6,我試圖配置Magento 2在子文件夾中運行。Magento 2在子文件夾中Nginx

我已經有一些人在projets /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的,所以有人可以解釋我如何計算出來?

+0

你說它位於'/ mnt/storage/demo/demo-magento2'中,但是在你聲明'/ mnt/storage/demo-magento2 /'的位置塊中,那裏已經存在不匹配。糾正它,也許就是這樣吧 – Memes

+0

也說它必須至少Nginx 1.8或更高 –

+0

@Memes該死的,就是這樣,謝謝! (對不起,btw) – ClementParis016

回答

1

由於@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; 
} 

的關鍵是,我錯過了在路徑演示/子文件夾。 nginx錯誤實際上是不言自明的!

1

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的/網站下該文件-available目錄,並且啓用它,您希望從啓用了站點的目錄創建該文件的符號鏈接。