Nginx

使用 FastCGI-Mono-Server4 的 Nginx 子域

  • November 16, 2015

除了主網站,我還有 1 個子域,都在 nginx + fastcgi-mono-server4 上執行。

問題:我必須讓子域對所有 .conf/.webapp 文件使用不同的埠(埠 81),否則當我訪問subdomain.example.com時,它總是顯示example.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 &

以為我會更新我的發現並發布我最終做了什麼。該服務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>

引用自:https://serverfault.com/questions/736447