การปรับปรุง Nginx ให้เป็น Modular จะช่วยให้คุณจัดการ Config ได้ง่ายขึ้นมาก ลดความซ้ำซ้อน และลดโอกาสเกิด Error เวลาแก้ไข
สร้างโฟลเดอร์สำหรับ Global Snippets
แทนที่จะเขียน Config ชุดเดิมซ้ำ ๆ ในทุกไฟล์ ให้แยกมันออกมาเป็นไฟล์เล็ก ๆ ใน /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
นำ 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/livepitt.plusmagi.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/livepitt.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;
}