configurationnginx的2个位置,而1个答案的具体url请求

我为奇怪的标题道歉:)

我拥有的

我有两个Web应用程序运行在同一台服务器上(一个OSClass安装和香草论坛)。 其中一个应该是一切的主人 (OSClass) – 几乎每个请求都应该由该应用程序处理。 另一个应用程序只能回答一些具体的请求(香草论坛,但让我们称之为奴隶 )。

masterPage (OSClass)
位于目录/ var / www / webroot / master中
并收听每个请求,比如mypage.example.com/*
(但不是奴隶网页的url)

slavePage (香草论坛)
在目录/ var / www / webroot / slave /
而且只能听取像mypage.example.com/slave/*

主人是如何工作的

主应用程序正在使用这样的configuration

# # 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 } } 

我怎么努力让奴隶工作

我想,因为configuration为主为什么不重复“服务器”环境,并将其调整为奴隶。 像这样的东西:

 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 } 

但是,这是行不通的 – urlmypage.example.com/slave仍然导致主页面。我也尝试了两个位置定义,但显然我不能定义一个位置为主 ,适用于除了那些每个请求应该由奴隶处理..例如

 location /(!/slave) 

对不起,我真的不太了解服务器configuration,直到现在我还没有find任何帮助我的教程。 有谁知道我可以如何configuration服务器? 或者是否有一个正则expression式,我可以用来排除从位置的奴隶?

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通用configuration(fastcgi_params)中定义了,所以不需要在这里包含它。 其实这里configuration错了。

alias指令设置了这个URI位置的文件所在的目录。