new page :3
All checks were successful
Homepage Build and Deploy / Build Homepage Image (push) Successful in 26s
Homepage Build and Deploy / Deploy Homepage (push) Successful in 4s

This commit is contained in:
2026-07-10 10:49:11 -03:00
parent df8932fc01
commit 367ecfa876
14 changed files with 1231 additions and 582 deletions

View File

@@ -23,9 +23,24 @@ http {
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 100;
types_hash_max_size 2048;
client_max_body_size 20M;
# Buffers & Timeouts tuning
client_body_buffer_size 16k;
client_header_buffer_size 1k;
large_client_header_buffers 4 8k;
client_body_timeout 12s;
client_header_timeout 12s;
send_timeout 10s;
# Open File Cache
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
# Gzip compression
gzip on;
gzip_vary on;
@@ -40,19 +55,29 @@ http {
application/javascript
application/x-javascript
application/xml+rss
image/svg+xml;
image/svg+xml
image/x-icon
application/wasm
font/woff
font/woff2
application/vnd.ms-fontobject
application/x-font-ttf;
gzip_min_length 256;
gzip_disable "msie6";
# Security headers
# Security headers (Global default)
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
# HTTP (port 80) Server Block
server {
listen 80;
server_name localhost;
listen [::]:80;
server_name localhost ivanch.me www.ivanch.me;
root /usr/share/nginx/html;
index index.html;
@@ -60,30 +85,48 @@ http {
charset utf-8;
# Custom error pages
error_page 404 /index.html;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# Main location
location / {
try_files $uri $uri/ /index.html;
try_files $uri $uri/ =404;
}
# Cache static assets
# Cache static assets & redeclare security headers to bypass Nginx header override gotcha
location ~* \.(jpg|jpeg|png|gif|ico|svg|webp)$ {
expires 1y;
add_header Cache-Control "public, immutable";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
access_log off;
}
location ~* \.(css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
access_log off;
}
location ~* \.(woff|woff2|ttf|otf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
access_log off;
}
@@ -91,6 +134,12 @@ http {
location ~* \.html$ {
expires 1h;
add_header Cache-Control "public, must-revalidate";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
}
# Deny access to hidden files
@@ -108,3 +157,4 @@ http {
}
}
}