Nginx работает с apache-подобными локациями

Я пытаюсь перенести свой личный сервер с apache на nginx, но не могу заставить работать это местоположение.

На моем сервере есть несколько приложений, доступных в каком-то / чем-то из корня, например url.com/git url.com/mediaWiki, url.com/vnstat url.com/redmine

В apache есть куча конфигурационных файлов для каждого приложения:

redmine.conf

<Location "/redmine">
    Options none
    Require all granted

    PassengerEnabled On
    RailsBaseURI /redmine
    RailsEnv production
</Location>

vnstat_php.conf

Alias /vnstat /var/www/vnstat_php

<Directory /var/www/vnstat_php>
        DirectoryIndex index.php
        Require all granted
</Directory>

Я пытаюсь воспроизвести это на nginx, но моя лучшая попытка на данный момент заканчивается странным URL-адресом. Мне удается работать только с записью в основном файле конфигурации ngix:

server {
    listen       8123 default_server;
    listen       [::]:8123 default_server;
    server_name  _;
    root         /var/www/html;

    location / {
    }

    location /vnstat/ {
        root   /var/www/vnstat_php/;
        index  index.php;
    }
}

Корневая страница работает нормально, но ссылка /vnstat отправляет меня на

2017/02/20 11:37:19 [error] 27538#0: *1 "/var/www/vnstat_php/vnstat/index.php" is not found (2: No such file or directory), client: 177.92.59.216, server: _, request: "GET /vnstat/ HTTP/1.1", host: "url.com:8123"

Он ищет каталог vnstat внутри /var/www/vnstat_php/ вместо того, чтобы использовать его как root. Может кто-то указать мне верное направление?


person Techmago    schedule 20.02.2017    source источник
comment
Вам нужно alias, а не root. Возможно, что-то подобное.   -  person Richard Smith    schedule 20.02.2017


Ответы (1)


Как описано в http://nginx.org/en/docs/http/ngx_http_core_module.html#root

Путь к файлу создается простым добавлением URI к значению корневой директивы. Если необходимо изменить URI, следует использовать директиву alias.

вы должны использовать псевдоним для этого случая:

http://nginx.org/en/docs/http/ngx_http_core_module.html#alias

location /vnstat/ {
  alias /var/www/vnstat_php/;
}

Но при использовании PHP с nginx вам следует рассмотреть возможность работы с FastCGI: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/

person linath    schedule 20.02.2017
comment
Все еще ищет не в том месте open() /var/www/html/vnstat не удалось (2: Нет такого файла или каталога), клиент: 177.92.59.216, сервер: _, запрос: GET /vnstat HTTP/1.1, хост: URL .com:8123, реферер: url.com:8123/frame.html - person Techmago; 20.02.2017