These are notes I made for getting an application written for Asp.Net Mvc (It was probably Mvc 3-ish) to run on a Centos server.
Note that some of the issues/solutions may vary across Linux variants. The interface Nginx-Mono is FastCGI, which they both support. The Mono webserver is xsp4.
Of course, running cross platform is all much easier these days if you use .Net Core and Kestrel 🙂 And een for Net Framework running on Mono, the work done since Microsoft bought Xamarin has been really helpful for e.g. Mvc compatibility.
The Reading List
- NGINX Docs : http://nginx.org/en/docs/
- NGINX FastCGI: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
- Mono FastCGI
- http://yojimbo87.github.io/2010/03/14/mono-startup-script.html
- http://www.mono-project.com/docs/web/fastcgi/nginx/
The Checklist
Ensure nginx has read execute permissions on your application directory and all parent directories
nginx conf section for webapp
With the Asp.Net website listening on port 9001
# server { listen 8080; server_name your-public-facing-nginx-server-name.com; # use /smoketest/ to confirm that nginx is reading this config # and has read/execute access to the # /usr/share/nginx directories and files: location /smoketest/ { root /usr/share/nginx/smoketestredir; index index.html; } # pass XSP to FastCGI server listening on 127.0.0.1:9001 # use a different port for each ASP.NET site you create # (port 9000 is often taken by PHP on default webserver setups) location / { # replace fastcgi with this to confirm nginx read address # to files in root /usr/share/nginx/mywebapplication; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.html; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; } }
Systemd Startup Script
vim /etc/systemd/system/fastcgi-mono-hdmbreas.service [Unit] Description=FastCgi-mono-server4 for Application After=syslog.target [Service] Type=simple ExecStart=/bin/fastcgi-mono-server4 --applications /:/usr/share/nginx/hdmbreas/hdm-fe-web --socket=tcp:127.0.0.1:9001 Restart=always systemctl daemon-reload systemctl start fastcgi-mono-app.service systemctl status fastcgi-mono-app.service systemctl status fastcgi-mono-app.service
Error: [error] 7216#0: *119 upstream sent too big header while reading response header
- Considering setting the buffer size
- Considering setting the busy buffer size
- e.g. nginx config: fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;
Watching Errors
Watch errors with tail -F /var/log/nginx/error.log