user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  off;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    upstream backend_snipt {
        server 127.0.0.1:8000;
    }
    server {
        listen      80;
        server_name *.snipt.net;
    
        if ($host ~* "^([^.]+(\.[^.]+)*)\.snipt.net$"){
            set $subd $1;
            rewrite ^(.*)$ https://$subd.snipt.net$1 permanent;
            break;
        }
    }
    server {
        listen      80;
        server_name snipt.net www.snipt.net beta.snipt.net;
        rewrite     ^(.*) https://snipt.net$1 permanent;
    }
    server {
        listen      443;
        server_name www.snipt.net;
    
        access_log  off;
        error_log   /logs/nginx.log;
    
        ssl on;
        ssl_certificate /etc/certs/2013-dnsimple/snipt.net.crt;
        ssl_certificate_key /etc/certs/2013-dnsimple/snipt.net.key;
    
        rewrite ^(.*) https://snipt.net$1 permanent;
    }
    server {
        listen      443;
        server_name snipt.net *.snipt.net;
    
        access_log  off;
        error_log   /logs/nginx.log;
    
        ssl on;
        ssl_certificate /etc/certs/2013-dnsimple/snipt.net.crt;
        ssl_certificate_key /etc/certs/2013-dnsimple/snipt.net.key;
    
        location ~* /favicon.ico {
            root /app/snipt/static/img/;
            expires max;
        }

        location / {
            rewrite_by_lua '
                if string.find(ngx.var.host, "_") then
                    local newHost, n = ngx.re.gsub(ngx.var.host, "_", "-")
                    ngx.redirect(ngx.var.scheme .. "://" .. newHost .. ngx.var.uri)
                end
            ';
            proxy_pass       http://backend_snipt;
            proxy_set_header Host $host;
        }
    
        location /static/ {
            alias /app/snipt/static/;
            expires max;
        }
    
        location /public/feed/ {
            rewrite ^/public/feed/$ https://snipt.net/public/?rss permanent;
        }
    }
    server {
        listen      80 default_server;
    
        access_log  off;
        error_log   /logs/nginx.log;
    
        location ~* /favicon.ico {
            root /app/snipt/static/img/;
            expires max;
        }
    
        location / {
            proxy_pass       http://backend_snipt;
            proxy_set_header Host $host;
        }
    
        location /static/ {
            alias /app/snipt/static/;
            expires max;
        }
    }

}

