I don’t have a CDN. However, I run my Discourse instance behind Nginx with a very simple config:
server {
listen 443 ssl http2;
server_name discourse.FQDN;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/discourse.FQDN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.FQDN/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/discourse.FQDN/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# Tell browsers the site should only be accessed via https.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Content-Security-Policy upgrade-insecure-requests;
# log files
access_log /var/log/nginx/discourse.FQDN-access.log;
error_log /var/log/nginx/discourse.FQDN-error.log;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
client_max_body_size 10m;
proxy_read_timeout 300;
location / {
proxy_pass http://127.0.0.1:8008;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
location @rewrites {
add_header X-Cache-Engine "No cache";
rewrite ^ /index.php last;
}
}