Table of Content
Example Config File
upstream dashboard_backend {
server web:5000;
}
upstream dashboard_frontend {
server frontend:3000;
}
server {
listen 80;
location / {
return 301 https://$host$request_uri;
}
location ~* <my-pattern> {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/my_site.crt;
ssl_certificate_key /etc/ssl/private/my_site.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
proxy_redirect off;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
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 X-Forwarded-Host $server_name;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
location ~* ^(/self_backend|/scratch_fulfill).* {
proxy_pass http://dashboard_backend;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
Useful Arguments
The variable $http_host
contains the host in the original request, whereas $uri
contains the path after the domain or IP. The last two variables $is_args
and $args
check for any additional arguments in the initial request, and they add them automatically to the proxied request.