Nginx Configuration อธิบายทุก Block ที่ต้องรู้

บทนำ

ไฟล์ nginx.conf เป็นหัวใจของ Nginx ที่มีการตั้งค่าทั้งหมดสำหรับ Web Server บทความนี้จะอธิบาย Block ต่างๆ ใน nginx.conf เช่น worker_processes, keepalive, gzip, buffers เพื่อให้คุณเข้าใจการตั้งค่า Nginx ได้อย่างลึกซึ้ง

โครงสร้าง nginx.conf ทั่วไป

ไฟล์ nginx.conf มีโครงสร้างหลักดังนี้:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    
    sendfile on;
    keepalive_timeout 65;
    
    server {
        listen 80;
        server_name example.com;
        root /var/www/example.com;
    }
}

ความหมาย Block หลัก

user – ผู้ใช้ที่ Nginx ทำงานด้วย (โดยปกติคือ nginx)

worker_processes – จำนวน Worker Process ที่ Nginx ใช้ “auto” จะใช้จำนวนตัวประมวลผล (CPU Cores)

error_log – ไฟล์ Log สำหรับข้อผิดพลาด

pid – ไฟล์เก็บ Process ID

Block Events

ส่วน events มีค่าสำหรับการประมวลผล Connection:

events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
}

worker_connections – จำนวน Connection ที่ Worker สามารถจัดการได้พร้อมกัน

use – เลือก Method สำหรับประมวลผล (epoll สำหรับ Linux)

multi_accept – ยอม Worker รับหลาย Connection พร้อมกัน

Block HTTP – ตั้งค่า Global

ส่วน http มีการตั้งค่าสำหรับทั้ง HTTP Server:

http {
    include mime.types;
    default_type application/octet-stream;
    
    log_format main '$remote_addr - $remote_user [$time_local]';
    access_log /var/log/nginx/access.log main;
    
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    client_max_body_size 20M;
}

ตัวเลือก Gzip Compression

การบีบอัดข้อมูลช่วยลดขนาดการส่งข้อมูล:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml;

ตัวเลือก Buffer และ Timeout

การตั้งค่า Buffer เพื่อการทำงานที่ดีขึ้น:

client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 8k;

connect_timeout 60;
send_timeout 60;
keepalive_timeout 60;

ตัวเลือก Caching

การตั้งค่า Cache เพื่อปรับปรุงประสิทธิภาพ:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

map $sent_http_content_type $expires {
    default                    off;
    text/html                  epoch;
    text/css                   max;
    application/javascript     max;
    ~image/                    max;
}

สรุป

การเข้าใจ nginx.conf ช่วยให้คุณสามารถเพิ่มประสิทธิภาพและความปลอดภัยของ Nginx ได้ เมื่อใช้ Cloud VPS จาก Dot Enterprise (https://de.co.th/cloud-vps) คุณสามารถแก้ไขไฟล์ nginx.conf ได้อย่างเต็มที่ และปรับแต่งการตั้งค่าตามความต้องการของเว็บไซต์ของคุณได้