DevOps

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

เผยแพร่ · แก้ไขล่าสุด

บทนำ

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

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

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

<!-- wp:code --><code>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;
    }
}</code><!-- /wp:code -->

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

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

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

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

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

Block Events

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

<!-- wp:code --><code>events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
}</code><!-- /wp:code -->

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

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

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

Block HTTP - ตั้งค่า Global

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

<!-- wp:code --><code>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;
}</code><!-- /wp:code -->

ตัวเลือก Gzip Compression

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

<!-- wp:code --><code>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;</code><!-- /wp:code -->

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

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

<!-- wp:code --><code>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;</code><!-- /wp:code -->

ตัวเลือก Caching

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

<!-- wp:code --><code>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;
}</code><!-- /wp:code -->

สรุป

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

  • CI/CD Pipeline ด้วย GitHub Actions
  • Docker Compose สำหรับ Deployment
  • ตั้งค่า Jenkins CI/CD
  • GitLab CI/CD Pipeline
  • Terraform Infrastructure as Code

แท็กNginxDevOps