cfg/xb-00-01/nginx/website.conf
inference c609c90315
feat(nginx): add legacy www. subdomains
This is required by Google for their HSTS preloading service as many
people still use this legacy subdomain rather than the bare domain to
connect to websites.
2025-06-28 20:45:30 +00:00

87 lines
2.6 KiB
Plaintext

# Inferencium - xb-00-01
# Nginx - Configuration - Website
# Copyright 2022 Jake Winters
# SPDX-License-Identifier: BSD-3-Clause
# Version: 10.0.0-alpha.5
# Server (unencrypted)
## Redirect from this server block to an encrypted server block if TLS is required
server {
# General
server_name inferencium.net www.inferencium.net;
## IPv4
listen 80;
## IPv6
listen [::]:80;
# Location
location / {
return 301 https://$server_name$request_uri;
}
}
# Server (TLS)
server {
# General
server_name inferencium.net;
## IPv4
listen 443 ssl http2;
## IPv6
listen [::]:443 ssl http2;
# Location
location / {
root /srv/www/inferencium;
index index.html;
try_files $uri.html $uri $uri/ =404;
rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent;
rewrite ^/(.*)/$ /$1 permanent;
}
# Security
ssl_trusted_certificate /etc/letsencrypt/live/inferencium.net/chain.pem;
ssl_certificate /etc/letsencrypt/live/inferencium.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/inferencium.net/privkey.pem;
ssl_protocols TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256";
ssl_conf_command Ciphersuites "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256";
ssl_conf_command Options PrioritizeChaCha;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_cache shared:ssl_session_cache:10m;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=126200000; includeSubDomains; preload";
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy "default-src 'self'; img-src 'self'; media-src 'self'; object-src 'none'; script-src 'none'; connect-src 'none'; frame-src 'none'; style-src 'self'; font-src 'self'";
add_header Referrer-Policy no-referrer;
client_max_body_size 16m;
ignore_invalid_headers off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# MIME types
types {
text/html html;
text/css css;
text/xml xml;
text/plain txt;
image/png png;
image/jpeg jpg;
}