Nginx rewrite для сайта в подпапке
Доброго времени суток!
Подскажите, пожайлуста, как правильно прописать правила для nginx при использовании сайта в подпапке.
Т.е. есть главный сайт site.ru
В папку site.ru/site2/ установлен еще один сайт с MODx.
Подскажите, пожайлуста, как правильно прописать правила для nginx при использовании сайта в подпапке.
Т.е. есть главный сайт site.ru
В папку site.ru/site2/ установлен еще один сайт с MODx.
Комментарии: 12
А сами файлы на сервере в отдельной директории? Если да, то по советам stackoverflow, просто добавить location в server {} отдельный root и правила для него.
location /site2/ {
root /var/www/path/site2;
# Do this inside of a location so it can be negated
location ~ \.php$ {
try_files $uri $uri/ =404; # Don't let php execute non-existent php files
include fastcgi_params;
fastcgi_pass backend-site1;
include /etc/nginx/mime.types;
include /etc/nginx/fastcgi.conf;
default_type application/octet-stream;
}
location ~* ^.+\.(jpg|jpeg|gif|png|js|ico|bmp)$ {
access_log off;
expires 10d;
break;
}
}
В том и проблема. Изначально планировалось разносить сайты по поддоменам, а теперь нужно по подпапками и соответственно сайт, лежащий в корне «перебивает» правила для подпапок. Теперь основной сайт тоже в подпапку надо переносить или есть, все таки, способ хитро прописать правила?
С вышеприведенными настройками у меня сайты работают, находясь физически в /var/www/site1/ и /var/www/site2/, но открываются правильно по
Если оба сайта на модекс, то должны быть и получше решения, с использованием единой установки, кажется тут было что-то похожее.
http://site1/ и http://site1/site2
Если оба сайта на модекс, то должны быть и получше решения, с использованием единой установки, кажется тут было что-то похожее.
Спасибо, надо попробовать такой конфиг. А дружественные урл работают в таком случае? Единая установка уже не годиться т.к. разрабатывались сайты независимо друг от друга и объединять их это ад адский уже будет :-)
Все должно работать.
Почему-то не хочет заводиться, а вы бы не могли полный конфиг сбросить, вместе с корневым сайтом или ссылку дайте на stackoverflow, где это обсуждалось.
Конфиг довольно специфичный т.к. там сайты не на модекс, может поэтому. А почему не заводится? nginx -t должен проблему показать.
upstream backend-rez {server unix:/var/run/php5-rez.sock;}
server {
listen 80;
server_name site.ru www.site.ru;
root /var/www/site/www;
access_log /var/log/nginx/site-access.log;
error_log /var/log/nginx/site-error.log;
index index.php index.html;
rewrite_log on;
if ($host != 'site.ru' ) {
rewrite ^/(.*)$ http://site.ru/$1 permanent;
}
location ~* ^/core/ {
deny all;
}
location / {
try_files $uri $uri/ @rewrite;
}
location /index.html {
rewrite / / permanent;
}
location ~ ^/(.*?)/index\.html$ {
rewrite ^/(.*?)/ // permanent;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass backend-rez;
}
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ {
access_log off;
expires 10d;
break;
}
location ~ /\.ht {
deny all;
}
location /site2/ {
root /var/www/site2
location ~* ^/core/ {
deny all;
}
location / {
try_files $uri $uri/ @rewrite;
}
location /index.html {
rewrite / / permanent;
}
location ~ ^/(.*?)/index\.html$ {
rewrite ^/(.*?)/ // permanent;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass backend-rez;
}
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ {
access_log off;
expires 10d;
break;
}
location ~ /\.ht {
deny all;
}
}
Ну если я вас правильно понял мы просто создаем еще один location с другим root и дублируем туда все правила для rewrite.Но где-то ошибка получается и nginx не хочет стартовать.
в консоли nginx -t ошибки показывает. В нашем случае
directive «root» is not terminated by ";"пропустил ";" после root
Да действительно. Теперь ошибка:
[emerg] location "/" is outside location "/site2/"[emerg] location "/" is outside location "/site2/"
[emerg] location "/" is outside location "/site2/"[emerg] location "/" is outside location "/site2/"
Для modx выходит сложнее.
del
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.