การปรับปรุง Nginx ให้เป็น Modular จะช่วยให้คุณจัดการ Config ได้ง่ายขึ้นมาก ลดความซ้ำซ้อน และลดโอกาสเกิด Error เวลาแก้ไข
สร้างโฟลเดอร์สำหรับ Global Snippets
แทนที่จะเขียน Config ชุดเดิมซ้ำๆ ในทุกไฟล์ ( เช่น HTTP/3 Headers, SSL Settings, หรือ Security Headers ) ให้แยกมันออกมาเป็นไฟล์เล็ก ๆ ใน /etc/nginx/snippets/
ตัวอย่างไฟล์ที่ควรแยก
- /etc/nginx/snippets/http3.conf
http2 on; add_header Alt-Svc 'h3=":443"; ma=86400';
- /etc/nginx/snippets/php-fpm.conf
include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.5-fpm.sock; fastcgi_read_timeout 300;
- /etc/nginx/snippets/proxy-params.conf
# /etc/nginx/snippets/proxy-params.conf proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket Support (จำเป็นสำหรับ Webmin / Terminal) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Timeouts & Buffering proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_connect_timeout 300s; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k;
- /etc/nginx/snippets/security.conf
add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; server_tokens off;
ทำความสะอาดไฟล์ Virtual Host ( sites-enabled )
นำ Snippets ที่สร้างไว้มา include ในไฟล์ Config ของแต่ละโดเมนแทน
ตัวอย่าง: plusmagi.com.wordpress.conf ( เวอร์ชันใหม่ )
server {
listen 443 ssl;
listen 443 quic reuseport;
server_name pitt.plusmagi.com;
root /var/www/plusmagi.com/pitt;
index index.php index.html;
# --- Use Snippets ---
include snippets/http3.conf;
include snippets/security.conf;
# SSL (Let's Encrypt)
ssl_certificate /etc/letsencrypt/live/pitt.plusmagi.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pitt.plusmagi.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/php-fpm.conf;
fastcgi_param PHP_VALUE "open_basedir=/proc/:/tmp/:/var/www/plusmagi.com/pitt";
}
# Caching assets
include snippets/static-assets.conf;
}