Skip to content

Nginx reverse proxy for https

Ruslan edited this page Oct 27, 2021 · 1 revision

Described in phoenix docs - https://phoenixframework.readme.io/docs/serving-your-application-behind-a-proxy

NOTE:

You need to add proxy_set_header X-Forwarded-Proto $scheme; for google auth to work correctly.

Example config with nginx and letsencrypt:

server {
    server_name books.example.com;

    location / {
    	# Proxy Headers
   	proxy_http_version 1.1;
    	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-Cluster-Client-Ip $remote_addr;

    	# The Important Websocket Bits!
    	proxy_set_header Upgrade $http_upgrade;
    	proxy_set_header Connection "upgrade";

	proxy_pass "http://127.0.0.1:8080"; # docker run will change from 80:80 to 8080:80
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/books.10clouds.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/books.10clouds.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = books.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name books.10clouds.com;
    return 404; # managed by Certbot
}

Clone this wiki locally