Nginx
使用 FastCGI-Mono-Server4 的 Nginx 子域
除了主網站,我還有 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>