For work I need to setup one domain with multiple subdomains. The basic idea for the website is the same as Fog Bugz, in that it’s a web hosted app. And each customer has their own site e.g. johnny.quickpm.net would be johhny’s site.
For the technology side we use ASP.Net Web forums for the actual software, that is johnny.quickpm.net is running an instance of Asp.net WebForms on Mono. But for the main site quickpm.net I want to run ASP.Net MVC since I like the MVC model and mono now (mostly) supports ASP.Net MVC in the current daily builds.
For the server software I’m using Nginx and the Mono FastCGI interface. The important configuration bits are
nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost *.quickpm.net;
root /usr/local/nginx/html/$host;
#charset koi8-r;
access_log logs/access.log;
location / {
root /usr/local/nginx/html/$host/;
index index.html index.htm index.aspx default.aspx Default.aspx;
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$host$fastcgi_script_name;
include ../conf/fastcgi_params;
}
#location / {
# root html;
# index index.html index.html index.aspx default.aspx Default.aspx;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
To run the mono fastcgi server use
fastcgi-mono-server2 /applications=cmd.quickpm.net:/:/usr/local/nginx/html/cmd.quickpm.net,quickpm.net:/:/usr/local/nginx/html/quickpm.net /socket=tcp:127.0.0.1:9000
Doing the above results in quickpm.net resolving to /usr/local/nginx/html/quickpm.net and cmd.quickpm.net resolving to /usr/local/nginx/html/cmd.quickpm.net also mono will serve the two directories as two separate ASP.Net Applications.
Pingback: Mono FastCGI automatic subdomain apps « A blog on math
Hi Bryan,
I am also considering using nginx + mono. How is it working, are you happy with the results?
Yes, I’ve been very happy with the results.
Pingback: 2010 in review « Math and More
Hello Brian,
I’m trying to port a mvc application to mono but the homepage does not work. I’m having the same problem as this dude has http://stackoverflow.com/questions/3891976/mono-mvc-2-home-route-doesnt-work/4945773#4945773 do you have any ideas why that might not work? /home and /home/index work but not /
I’m sorry I don’t have any specific suggestions, it’s been a while since I’ve setup Mono with MVC. The only thing I can suggest is creating a new MVC2 project in Mono that works and comparing the configuration with the existing MVC2 project that you’re converting.
Hello, I just hopped over to your web site via StumbleUpon. Not somthing I might usually browse, but I enjoyed your thoughts none the less. Thanks for making something worthy of reading.