Improve SEO in nginx.conf, index.html; update favicon and logos; embedded card now supported; Dockerfile slimmed and modernized
All checks were successful
/ image_build (push) Successful in 1m14s

This commit is contained in:
2026-09-25 12:37:01 -04:00
parent 1c78e959f6
commit 75d05beb7a
13 changed files with 1076 additions and 246 deletions

View File

@@ -8,75 +8,56 @@ events {
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
# Prevent nginx HTTP Server Detection
server_tokens off;
keepalive_timeout 65;
# Enable compression on all routes
gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_types application/atom+xml text/javascript application/javascript application/json application/manifest+json application/xml font/opentype image/svg+xml text/css text/plain;
# Core Security Headers (Applies to all routes unless overridden)
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Robots-Tag "index, follow, max-image-preview:large, max-snippet:-1" always;
add_header X-XSS-Protection "1; mode=block" always;
server {
server_name tymur999.com;
listen 8000;
# set max upload size and increase upload timeout:
client_max_body_size 10G;
client_body_timeout 300s;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
# Path to the root of your installation
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html =404;
# Never cache the entry point so users always get the latest bundle pointers
add_header Cache-Control "no-cache, no-store, must-revalidate";
}
# Static Assets, WebGL/3D Models, and Fonts
location ~* \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac|gltf|glb|otf|ttf|woff2?)$ {
try_files $uri =404; # Fail fast on missing assets, do not serve index.html
access_log off;
# Aggressive caching for hashed bundle assets
add_header Cache-Control "public, max-age=31536000, immutable";
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Serve static files
location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ {
try_files $uri @index;
add_header Cache-Control "public, max-age=15778463";
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
}
location ~ \.(otf|woff2?)$ {
try_files $uri @index;
expires 7d; # Cache-Control policy borrowed from `.htaccess`
}
location / {
try_files $uri @index;
}
location @index {
add_header Cache-Control no-cache;
expires 0;
try_files /index.html =404;
}
}
}
}