Cod4x WebAdmin by default runs on port 3000, meaning that builds are usually accessed using a port number in addition to their hostname (e.g. http://example.org:3000)

In order to allow Cod4x WebAdmin to be served without a port, nginx can be set up to proxy all requests to a particular hostname (or subdomain) to an upstream Cod4x WebAdmin build running on any port.

Requirements

*NGINX version v1.3.13 or greater

To determine your nginx version, execute nginx -V in a shell

Configuration

NGINX-served sites are contained in a server block. This block of options goes in a specific place based on how nginx was installed and configured:

  • /path/to/nginx/sites-available/* -- files here must be aliased to ../sites-enabled
  • /path/to/nginx/conf.d/*.conf -- filenames must end in .conf
  • /path/to/nginx/httpd.conf -- if all else fails

Below is the basic nginx configuration for a Cod4x WebAdmin build running on port 3000:

server {
    listen 80;

    server_name forum.example.org;

	    location / {
	        proxy_set_header X-Real-IP $remote_addr;
	        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	        proxy_set_header X-Forwarded-Proto $scheme;
	        proxy_set_header Host $http_host;
	        proxy_set_header X-NginX-Proxy true;

	        proxy_pass http://127.0.0.1:3000;
	        proxy_redirect off;

	        # Socket.IO Support
	        proxy_http_version 1.1;
	        proxy_set_header Upgrade $http_upgrade;
	        proxy_set_header Connection "upgrade";
	    }
	}

Below is an nginx configuration which uses SSL.

### redirects http requests to https
    server {
        listen 80;
        server_name example.org;
    
        return 302 https://$server_name$request_uri;
    }
    
    ### the https server
    server {
        # listen on ssl, deliver with speedy if possible
        listen 443 ssl spdy;
    
        server_name example.org;
    
        # change these paths!
        ssl_certificate /path/to/cert/bundle.crt;
        ssl_certificate_key /path/to/cert/example.org.key;
    
        # enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated.
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
        # disables all weak ciphers
        ssl_ciphers 'AES128+EECDH:AES128+EDH';
    
        ssl_prefer_server_ciphers on;
    
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:3000;  # no trailing slash
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
last edited by NeHo