#
# Simple installation instructions:
# 1. Install your TLS certificate, possibly using Let's Encrypt.
-# 2. Replace 'pleroma.example.tld' with your instance's domain wherever it appears.
+# 2. Replace 'example.tld' with your instance's domain wherever it appears.
# 3. Copy this file to /etc/nginx/sites-available/ and then add a symlink to it
# in /etc/nginx/sites-enabled/ and run 'nginx -s reload' or restart nginx.
inactive=720m use_temp_path=off;
server {
- server_name pleroma.example.tld;
+ server_name example.tld;
listen 80;
return 301 https://$server_name$request_uri;
listen 443 ssl http2;
ssl_session_timeout 5m;
- ssl_trusted_certificate /etc/letsencrypt/live/$server_name/fullchain.pem;
- ssl_certificate /etc/letsencrypt/live/$server_name/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/$server_name/privkey.pem;
+ ssl_trusted_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;
+ ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
# Add TLSv1.0 to support older devices
ssl_protocols TLSv1.2;
ssl_stapling on;
ssl_stapling_verify on;
- server_name pleroma.example.tld;
+ server_name example.tld;
gzip_vary on;
gzip_proxied any;
client_max_body_size 16m;
location / {
- # if you do not want remote frontends to be able to access your Pleroma backend
- # server, remove these lines.
- add_header 'Access-Control-Allow-Origin' '*' always;
- add_header 'Access-Control-Allow-Methods' 'POST, PUT, DELETE, GET, PATCH, OPTIONS' always;
- add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Idempotency-Key' always;
- add_header 'Access-Control-Expose-Headers' 'Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id' always;
- if ($request_method = OPTIONS) {
- return 204;
- }
- # stop removing lines here.
-
- add_header X-XSS-Protection "1; mode=block" always;
- add_header X-Permitted-Cross-Domain-Policies "none" always;
- add_header X-Frame-Options "DENY" always;
- add_header X-Content-Type-Options "nosniff" always;
- add_header Referrer-Policy "same-origin" always;
- add_header X-Download-Options "noopen" always;
- add_header Content-Security-Policy "default-src 'none'; base-uri 'self'; form-action *; frame-ancestors 'none'; img-src 'self' data: https:; media-src 'self' https:; style-src 'self' 'unsafe-inline'; font-src 'self'; script-src 'self'; connect-src 'self' wss://$server_name; upgrade-insecure-requests;" always;
-
- # Uncomment this only after you get HTTPS working.
- # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
-
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 16m;
}
- location /proxy {
+ location ~ ^/(media|proxy) {
proxy_cache pleroma_media_cache;
+ slice 1m;
+ proxy_cache_key $host$uri$is_args$args$slice_range;
+ proxy_set_header Range $slice_range;
+ proxy_http_version 1.1;
+ proxy_cache_valid 200 206 301 304 1h;
proxy_cache_lock on;
proxy_ignore_client_abort on;
+ proxy_buffering on;
+ chunked_transfer_encoding on;
+ proxy_ignore_headers Cache-Control;
+ proxy_hide_header Cache-Control;
proxy_pass http://localhost:4000;
}
}