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-сертификаты / плата за хостинг), избегая при этом самостоятельной подписи моих сертификатов (потому что во время разработки приложения используются другими людьми в случайном контексте и из-за самозаверяющих ошибок раздражать их).