General configuration

Managing server entries

It is possible to put different server blocks in different files. This allows you to easily enable or disable certain sites.

1
2
# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

Create a file inside the sites-available directory that contains one or more server blocks:

1
2
3
4
/etc/nginx/sites-available/example
server {
    ..
}

Append the following line at the end of the http block in /etc/nginx/nginx.conf:

1
include sites-enabled/*; 

To enable a server block, simple create a symlink:

1
# ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

To remove a server:

1
# unlink /etc/nginx/sites-enabled/example

Reload/restart nginx.service to enable the new configuration.

TLS/SSL

Configuration example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
upstream sample-backend {
    server 192.168.24.43:8000 fail_timeout=0 weight=2;
    server 127.0.0.1:8000 fail_timeout=0 weight=2;
}


server {

    location /images/ {
        root /data;
    }
    
    location /portal/ {
        proxy_set_header X-Forwarded-Proto      $http_x_forwarded_proto;
        proxy_set_header X-Forwarded-Port      $http_x_forwarded_port;
        proxy_set_header X-Forwarded-For      $http_x_forwarded_for;
        
        # newrelic-specific header records the time when nginx handles a request.
        proxy_set_header X-Queue-Start "t={msec}";
        
        proxy_redirect off;
        proxy_pass http://192.168.3.104:18381;
    }
    
    location /subportal/ {
        proxy_set_header X-Forwarded-Proto      $http_x_forwarded_proto;
        proxy_set_header X-Forwarded-Port      $http_x_forwarded_port;
        proxy_set_header X-Forwarded-For      $http_x_forwarded_for;
        
        # newrelic-specific header records the time when nginx handles a request.
        proxy_set_header X-Queue-Start "t={msec}";
        
        proxy_redirect off;
        proxy_pass http://159.138.1.223:8080;
    }
    
    location /catalog/ {
	    proxy_set_header X-Forwarded-Proto      $http_x_forwarded_proto;
            proxy_set_header X-Forwarded-Port      $http_x_forwarded_port;
            proxy_set_header X-Forwarded-For      $http_x_forwarded_for;

            # newrelic-specific header records the time when nginx handles a request.
            proxy_set_header X-Queue-Start "t={msec}";

            proxy_redirect off;
            #notice append backslash will no include catalog
            proxy_pass http://localhost:18381/;  
    }
    
    location @proxy_to_sample_app {
        proxy_set_header X-Forwarded-Proto      $http_x_forwarded_proto;
        proxy_set_header X-Forwarded-Port      $http_x_forwarded_port;
        proxy_set_header X-Forwarded-For      $http_x_forwarded_for;
        
        # newrelic-specific header records the time when nginx handles a request.
        proxy_set_header X-Queue-Start "t={msec}";
        
        proxy_redirect off;
        # distribute requests among worker processes in sample-backend.
        proxy_pass http://sample-backend;
    }
    
    location / {
        try_files $uri @proxy_to_sample_app;
    }
    
    location ~^/media/(?<file>.*) {
        root /path/to/media;
        try_files /$file=404;
        add_header Access-Control-Allow-Origin *;
        expires 130924304s;
    }
    
}