Прошу прощения за странное название :)
У меня два веб-приложения, работающих на одном сервере (установка OSClass и Vanilla Forum). Один из них должен быть мастер всего (OSClass) - почти каждый запрос должен обрабатываться этим приложением. Другое приложение должно отвечать только на некоторые конкретные запросы (Vanilla-Forum .. но позвольте назвать его раб).
masterPage (OSClass)
находится в каталоге / var / www / webroot / master
и слушает каждый запрос, например mypage.example.com/*
(но не URL-адрес подчиненной страницы)
slavePage (Ванильный форум)
находится в каталоге / var / www / webroot / slave /
и должен слушать только такие запросы, как mypage.example.com/slave/*
главное приложение работает с такой конфигурацией:
#
# some general stuff...
#
http {
# other stuff
server {
listen 80;
server_name mypage.example.com;
root /var/www/webroot/master
index index.php
try_files $uri $uri/ /index.php?$args;
location ~ .php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /var/www/webroot/master
fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
# some more stuff
}
}
Я подумал, раз уж конфигурация работает для мастера, почему бы не продублировать «серверную» среду и не настроить ее на подчиненную. что-то вроде этого:
server {
listen 80;
server_name mypage.example.com/slave;
root /var/www/webroot/slave
index index.php
try_files $uri $uri/ /index.php?$args;
location ~ .php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /var/www/webroot/slave
fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
# some more stuff
}
Но это не работает - URL-адрес mypage.example.com/slave по-прежнему приводит к мастер страница .. Я также пробовал два определения местоположения, но, видимо, я не могу определить местоположение для мастер, который работает для всех запросов, кроме тех, которые должны обрабатываться раб.. например
location /(!/slave)
извините, я действительно не очень разбираюсь в конфигурациях серверов, и до сих пор я не нашел ни одного учебника, который помог бы мне здесь. Кто-нибудь знает, как я мог настроить сервер? Или есть регулярное выражение Я мог бы исключить раб из мастер-расположение?
server_name
- это доменное имя сервера, оно не может содержать никаких других частей URL.
Вы можете делать все, что хотите, со следующей настройкой:
#
# some general stuff...
#
http {
# other stuff
server {
listen 80;
server_name mypage.example.com;
root /var/www/webroot/master
index index.php
try_files $uri $uri/ /index.php?$args;
location /slave {
alias /var/www/webroot/slave;
}
location ~ .php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
# some more stuff
}
}
В fastcgi_param SCRIPT_FILENAME
уже должен быть определен в общей конфигурации nginx (fastcgi_params), поэтому нет необходимости включать его здесь. На самом деле здесь было неправильно настроено.
В alias
Директива устанавливает каталог, из которого обслуживаются файлы для этого местоположения URI.