Installing and Configuring Nginx as an External Web Server
nginx vs Apache
We recommend nginx or lighttpd as they are better suited to handle the hundreds of file requests that MTA:SA clients will generate. Apache can be used, but will require settings tweaking and the mtasever.conf setting <httpmaxclientrequests> may have to be reduced to prevent timeouts.
The following guide is for installing and configuring nginx solely for MTA:SA. It assumes:
- You are not already using nginx for other web sites on your server.
- MTA:SA server is installed on the same server.
- You are using Debian 7 (but should work on other distributions in a similar way.)
Installing nginx:
Update system:
apt-get update apt-get upgrade
Install nginx:
apt-get install nginx
Ensure nginx is not running:
/etc/init.d/nginx stop
Configuring nginx:
Edit: /etc/nginx/sites-available/default
Find the 'root' line and change it to point to the http-client-files directory in your MTA:SA server install:
root /PATH_TO_MTA_SERVER/mods/deathmatch/resource-cache/http-client-files;
Find the 'listen' and change if to use an unused server port: (Remove # if present)
listen 20080;
Edit: /etc/nginx/nginx.conf
At the top of the file, add this line to increase the max number of files that can be opened:
worker_rlimit_nofile 5000;
Find the 'worker_connections' line and change it to this:
worker_connections 5000;
Find the 'gzip' settings and make sure gzip is on:
gzip on;
and 'gzip_types' is set for any file type:
gzip_types *;
Testing nginx:
Start nginx:
/etc/init.d/nginx start
Test #1
Open your internet browser, and try this address: http://YOUR_SERVER_IP:20080/admin/client/admin_ACL.lua
If prompted to download a file - SUCCESS!
Test #2
To test the compression is working, go here: http://www.whatsmyip.org/http-compression-test/ and enter http://YOUR_SERVER_IP:20080/admin/client/admin_ACL.lua in the white box and press 'Test'.
If green tick - SUCCESS!
Configure MTA:SA server:
Edit mtaserver.conf
Set httpdownloadurl to be like this:
<httpdownloadurl>http://YOUR_SERVER_IP:20080</httpdownloadurl>
And start MTA:SA server.
Test it all works!
Connect MTA:SA client and view nginx log files to confirm files are being downloaded: /var/log/nginx/access.log
Final thing
To improve performance, and to avoid huge boring log files, edit /etc/nginx/sites-available/default and add this line under the listen one:
access_log off;
and reload the nginx configuration:
/etc/init.d/nginx reload