Nginx voor Finch
Nginx fungeert als reverse proxy voor de Finch-applicatie. Dit maakt SSL-verwerking, het serveren van statische bestanden en load balancing mogelijk.
Concept van reverse proxy
Client → Nginx (poort 80/443) → Finch (poort 8080)
Nginx accepteert verzoeken, verwerkt SSL en stuurt ze door naar Finch op de achtergrond.
Nginx-configuratie
upstream finch_app {
server finch:8080;
}
server {
listen 80;
server_name example.com www.example.com;
# Statische bestanden rechtstreeks serveren
location /public/ {
alias /app/public/;
expires 30d;
add_header Cache-Control "public, immutable";
}
# Alles overige gaat naar Finch
location / {
proxy_pass http://finch_app;
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;
# WebSocket-ondersteuning
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
}
}
HTTPS-ondersteuning
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://finch_app;
proxy_set_header X-Forwarded-Proto https;
# ... overige headers
}
}
# HTTP omleiden naar HTTPS
server {
listen 80;
server_name example.com;
return 301 https://\$host\$request_uri;
}
try_files-instructie
Gebruik try_files voor Single Page Applications:
location / {
try_files \$uri \$uri/ @finch;
}
location @finch {
proxy_pass http://finch_app;
}