Nginx

NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more.

Serves as an ultra fast middle man between a client and server

See AWS EC2 for installation

sudo vi /etc/nginx/nginx.conf
sudo /etc/init.d/nginx start

sudo nginx -s reload

Configuration File

nginx and its modules configuration defined by nginx.conf and placed in the directory /usr/local/nginx/conf,/etc/nginx, or /usr/local/etc/nginx.

Directives are divided into simple directives and block directives.

If a block directive can have other directives inside braces, it is called a context (examples: events, http, server, and location).

May include several server blocks for different ports/server names

Nginx decides which server processes a request by testing uri specified in request's header, selects one with longest prefix and passes rest of uri to route

Serving Static Files

worker_processes auto;

events { }

http {
    server {
            #localhost/index.html => /data/www/index.html
        location / {
           root /data/www; 
        }
        #localhost/images/hi.png => /data/images/hi.png
        location /images/ {
           root /data;
        }
    }
}

Reverse Proxy Server

worker_processes auto;

events { }

server {
    listen 8080; #default port is 80
    root /data/up1; #will be used when not specified in location

    location / {
    }
}

server {
      #proxy_passes to above server
    location / {
        proxy_pass http://localhost:8080;
    }
}

Advanced

Regex URI

Preceded by ~

Precedent over normal prefix matches

location ~ \.(gif|jpg|png)$ {
    root /data/images;
}

Last updated