Nginx переписать каталог в приложение Symfony, но удалить каталог хоста

У меня есть виртуальная машина с несколькими приложениями для разработки, живущими на ней. Основной веб-каталог выглядит так:

/var/web/subdoms/:
    index.php
    MyApp/
    SomeOtherApp/

У меня есть мой конфигурационный файл Nginx, указывающий корень как / var / web / subdoms, такой что:

http://myserver/  -> /var/web/subdoms/index.php.

В подкаталоге MyApp находится проект Symfony2. В каталоге SomeOtherApp находится универсальное приложение perl-cgi

http://myserver/SomeOtherApp  -> /var/web/subdoms/SomeOtherApp/index.pl

Запросы к MyApp необходимо перенаправить в подкаталог так, чтобы:

http://myserver/MyApp/    ->  /var/web/subdoms/MyApp/symfony/web/

Оттуда запросы должны быть переписаны так, чтобы запросы доставлялись в "app.php" ала:

http://myserver/MyApp/          -> /var/web/subdoms/MyApp/symfony/web/app.php
http://myserver/MyApp/hello/you -> /var/web/subdoms/MyApp/symfony/web/app.php/hello/you

Я могу сделать это, установив свой корень: /var/web/subdoms/MyApp/symfony/web/ и запросить sans 'MyApp', следуя примерам документации symfony. Однако, когда я пытаюсь вложить приложение в один каталог (чтобы мой сервер мог обслуживать несколько приложений в одном домене вместо того, чтобы доминировать в приложении symfony), часть "MyApp" добавляется в URL-адрес:

http://myserver.com/MyApp/hello/you  -> /var/web/subdoms/MyApp/symfony/web/app.php/MyApp/hello/you

А потом Symfony жалуется, что не может найти маршрут "MyApp/hello/you". Я мог бы решить это, добавив MyApp ко всем моим маршрутам Symfony, но это кажется неуклюжим. Я бы лучше нашел способ через Nginx переслать каталог url sans в Symfony.

Если это поможет, вот моя текущая конфигурация nginx (с удалением других приложений):

server {
    listen          80;
    server_name myserver;

    root /var/web/subdoms;
    error_log /var/log/nginx/rr_error.log;
    access_log /var/log/nginx/rr_access.log;

    location /MyApp/ {
        rewrite ^/MyApp/(.*)$ /MyApp/symfony/web/app_dev.php/$1 last;
    }

    #was the way to redirect requests to app_dev.php when MyApp/Symfony/web was root
    location @rewriteRR {
        rewrite ^(.*)$ /app_dev.php/$1 last;
    }

    location ~ \.php(/|$) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass 127.0.0.1:9000;
    }

    location ~ /\.ht {
        deny all;
    }

}

В заключение я понимаю, что, вероятно, лучше использовать поддомен для разделения приложений (или нескольких доменов), но, как уже было сказано, это сервер разработки. Распределение его между поддоменами, различными хостами и т. Д. Будет слишком дорогостоящим. Мне нужно хранить все это на одном хосте / домене по соображениям стоимости (SSL-сертификаты / плата за хостинг), избегая при этом самостоятельной подписи моих сертификатов (потому что во время разработки приложения используются другими людьми в случайном контексте и из-за самозаверяющих ошибок раздражать их).

0 ответов

Другие вопросы по тегам