除了主网站之外,我还有 1 个子域名,全部在 nginx + fastcgi-mono-server4 上运行。
问题:我必须让子域名对所有 .conf/.webapp 文件使用不同的端口(端口 81),否则当我访问子域名.example.com,它始终显示内容示例.com相反。我的 .webapp 文件似乎有问题。如果我“破解”它并使用端口 81 作为子域,则显示正确的网站部分有效:https://stackoverflow.com/questions/28872585/how-to-handle-multiple-websites-through-fastcgi-server
以下是每个网站的 nginx.conf 文件:
##### SUBDOMAIN #####
server {
server_name subdomain.example.com;
root /subdomain;
listen 81;
location / {
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /opt/nginx/conf/fastcgi_params;
}
##### MAINWEBSITE #####
server {
server_name example.com;
root /mainwebsite;
listen 80;
location / {
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /opt/nginx/conf/fastcgi_params;
}
接下来是 fastcgi-mono-server4 所需的 .webapp 文件(均位于同一文件夹 /nginx/webapps 中):
##### SUBDOMAIN #####
<apps>
<web-application>
<name>subdomain</name>
<vhost>*</vhost>
<vport>81</vport>
<vpath>/</vpath>
<path>/subdomain</path>
</web-application>
</apps>
##### MAINWEBSITE #####
<apps>
<web-application>
<name>subdomain</name>
<vhost>*</vhost>
<vport>80</vport>
<vpath>/</vpath>
<path>/mainwebsite</path>
</web-application>
</apps>
为了启动 fastcgi 进程,我运行以下命令:
fastcgi-mono-server4.exe --appconfigdir /nginx/webapps /socket=tcp:127.0.0.1:9000 /logfile=/opt/nginx/logs/fastcgi.log &
答案1
我想更新我的发现并发布我最终做的事情。该服务fastcgi-mono-server4
无法像 nginx 那样进行智能路由,因此我们必须使用文件中的<vport>
或进行重定向。我排除了因为它看起来很丑陋,而且必须在防火墙中打开端口 81 是行不通的。<vpath>
.webapp
<vport> (:81)
因此,两害相权取其轻,我最终使用的解决方案是在nginx.conf
和.webapp
文件上都添加一个小的路径附加项(在文件中添加路径“/m”)
最终的 URL 将是:subdomain.example.com/m
##### SUBDOMAIN #####
server {
server_name subdomain.example.com;
listen 80;
//Addition of "/m" for location
location /m {
root /mainwebsite;
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /opt/nginx/conf/fastcgi_params;
}
.webapp 文件的内容:
##### SUBDOMAIN #####
<apps>
<web-application>
<name>subdomain</name>
<vhost>*</vhost>
<vport>80</vport>
<vpath>/m</vpath> //Addition of "/m" for <vpath>
<path>/subdomain</path>
</web-application>
</apps>