วิธีการติดตั้ง, กำหนดค่า, และปรับประสิทธิภาพ Nginx บน Ubuntu: คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น

目次

1. บทนำ

หลายคนสนใจการใช้ Nginx บน Ubuntu แต่ผู้เริ่มต้นอาจไม่รู้ว่าจะเริ่มจากตรงไหน บทความนี้ให้คำอธิบายที่เข้าใจง่ายเป็นขั้นตอน—ตั้งแต่การติดตั้ง Nginx บน Ubuntu ไปจนถึงการกำหนดค่าและการจัดการ—even หากคุณไม่มีประสบการณ์ใด ๆ มาก่อน

Nginx คืออะไร?

Nginx (Engine‑X) เป็นเว็บเซิร์ฟเวอร์ HTTP ประสิทธิภาพสูงและเป็น reverse proxy server ด้วยสถาปัตยกรรมที่เบาและยืดหยุ่น ทำให้มันเป็นที่นิยมใช้ในเซิร์ฟเวอร์และแอปพลิเคชันทั่วโลก โครงสร้างของมันเหมาะอย่างยิ่งกับสภาพแวดล้อมที่มีการจราจรสูง

ประโยชน์ของการใช้ Nginx บน Ubuntu

Ubuntu เป็นดิสทริบิวชัน Linux ที่ได้รับความนิยมและเข้ากันได้ดีกับ Nginx เนื่องจาก Ubuntu ใช้ระบบจัดการแพ็กเกจ APT การติดตั้งและอัปเดตจึงทำได้ง่าย และคุณสามารถคาดหวังความเสถียรและความปลอดภัยที่แข็งแรง

หลังจากอ่านบทความนี้แล้ว คุณจะเข้าใจว่า:

  • วิธีการติดตั้ง Nginx บน Ubuntu
  • ขั้นตอนการกำหนดค่าและการจัดการพื้นฐาน
  • เทคนิคการปรับประสิทธิภาพและการแก้ไขปัญหา

ตอนนี้มาเริ่มกันเลย

2. การติดตั้ง Nginx บน Ubuntu

เพื่อให้ Nginx ทำงานบน Ubuntu คุณต้องติดตั้งอย่างถูกต้อง ส่วนนี้จะอธิบายขั้นตอนการติดตั้งอย่างชัดเจนและง่ายดาย

ตรวจสอบแพ็กเกจที่จำเป็น

ก่อนติดตั้ง Nginx ให้แน่ใจว่าระบบของคุณเป็นเวอร์ชันล่าสุด รันคำสั่งต่อไปนี้:

sudo apt update
sudo apt upgrade

ติดตั้ง Nginx

เพื่อทำการติดตั้ง Nginx ให้พิมพ์คำสั่งต่อไปนี้:

sudo apt install nginx

คำสั่งนี้จะดาวน์โหลดและติดตั้ง Nginx โดยตรงจากรีโพสิตอรี APT ของ Ubuntu

ตรวจสอบการติดตั้ง

รันคำสั่งต่อไปนี้เพื่อตรวจสอบว่า Nginx ถูกติดตั้งอย่างถูกต้องหรือไม่:

sudo systemctl status nginx

หากสถานะแสดง active (running) แสดงว่าการติดตั้งสำเร็จแล้ว

กำหนดค่าไฟร์วอลล์

Ubuntu มี UFW (Uncomplicated Firewall) ที่คุณสามารถใช้เพื่ออนุญาตการรับส่งข้อมูลของ Nginx

sudo ufw allow 'Nginx Full'
sudo ufw enable

ตอนนี้ Nginx พร้อมสื่อสารผ่านพอร์ต 80 (HTTP) และพอร์ต 443 (HTTPS) แล้ว

3. การกำหนดค่า Nginx พื้นฐานบน Ubuntu

การติดตั้ง Nginx เพียงอย่างเดียวไม่พอ—you must configure it properly to use it effectively.

ตำแหน่งและโครงสร้างของไฟล์กำหนดค่า

Nginx ใช้ไฟล์กำหนดค่าต่อไปนี้:

  • ไฟล์กำหนดค่าหลัก: /etc/nginx/nginx.conf
  • ไฟล์กำหนดค่าที่เฉพาะสำหรับแต่ละไซต์: อยู่ในไดเรกทอรี /etc/nginx/sites-available/

โดยทั่วไปคุณจะสร้างไฟล์กำหนดค่า virtual host ในไดเรกทอรี sites-available แล้วสร้าง symbolic link ไปยังไดเรกทอรี sites-enabled เพื่อเปิดใช้งาน

การกำหนดค่า Virtual Host

Virtual host ช่วยให้เซิร์ฟเวอร์เดียวจัดการหลายโดเมนและหลายโครงการ ตัวอย่างต่อไปนี้เป็นการกำหนดค่า example.com:

sudo nano /etc/nginx/sites-available/example.com

ใส่การกำหนดค่าด้านล่างนี้:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

บันทึกไฟล์แล้วเปิดใช้งานการกำหนดค่า:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

การกำหนดค่า SSL/TLS

เพื่อเปิดการสื่อสารที่ปลอดภัย ให้กำหนดค่าใบรับรอง SSL/TLS คุณสามารถรับใบรับรองฟรีได้จาก Let’s Encrypt

ขั้นแรก ติดตั้ง certbot:

sudo apt install certbot python3-certbot-nginx

จากนั้นออกใบรับรองและตั้งค่าการทำงานอัตโนมัติ:

sudo certbot --nginx -d example.com -d www.example.com

ตรวจสอบให้แน่ใจว่าเปิดการต่ออายุอัตโนมัติของใบรับรองเพื่อป้องกันการหมดอายุ

4. การเริ่มต้นและการจัดการ Nginx

เมื่อ Nginx ถูกติดตั้งและกำหนดค่าแล้ว คุณต้องเรียนรู้วิธีการเริ่ม, หยุด, รีโหลด และแก้ไขปัญหา ส่วนนี้อธิบายคำสั่งการดูแลระบบที่สำคัญ

คำสั่งพื้นฐานของ Nginx

บน Ubuntu ใช้คำสั่ง systemctl เพื่อจัดการ Nginx:

  1. เริ่ม Nginx
    sudo systemctl start nginx
    
  1. หยุด Nginx
    sudo systemctl stop nginx
    
  1. รีสตาร์ท Nginx ใช้เมื่อมีการเปลี่ยนแปลงการกำหนดค่าหลัก
    sudo systemctl restart nginx
    
  1. โหลด Nginx ใหม่ นำการเปลี่ยนแปลงการกำหนดค่าไปใช้โดยไม่ต้องรีสตาร์ท
    sudo systemctl reload nginx
    
  1. ตรวจสอบสถานะ Nginx
    sudo systemctl status nginx
    

เปิดใช้งานการเริ่มต้นอัตโนมัติ

เพื่อเริ่ม Nginx อัตโนมัติหลังจากรีบูตระบบ:

  1. เปิดใช้งานการเริ่มต้นอัตโนมัติ
    sudo systemctl enable nginx
    
  1. ปิดใช้งานการเริ่มต้นอัตโนมัติ
    sudo systemctl disable nginx
    

การตรวจสอบล็อกและการแก้ไขปัญหา

หาก Nginx ไม่ทำงานตามที่คาดไว้ ให้ตรวจสอบล็อก:

  1. ล็อกข้อผิดพลาด
    sudo tail -f /var/log/nginx/error.log
    
  1. ล็อกการเข้าถึง
    sudo tail -f /var/log/nginx/access.log
    

ปัญหาทั่วไปและวิธีแก้ไข

  1. Nginx ไม่เริ่มต้น
  • สาเหตุ: ข้อผิดพลาดในไฟล์การกำหนดค่า
  • วิธีแก้ไข: bash sudo nginx -t ตรวจสอบข้อผิดพลาดไวยากรณ์และแก้ไข
  1. การเปลี่ยนแปลงไม่ถูกนำไปใช้
  • สาเหตุ: Nginx ไม่ได้โหลดใหม่
  • วิธีแก้ไข: รัน sudo systemctl reload nginx หลังจากเปลี่ยนแปลง
  1. พอร์ตไม่เปิด
  • สาเหตุ: การตั้งค่าไฟร์วอลล์
  • วิธีแก้ไข: bash sudo ufw allow 'Nginx Full'

5. การตั้งค่าไฟร์วอลล์ Nginx และการเสริมความปลอดภัย

ความปลอดภัยเป็นสิ่งสำคัญเมื่อใช้งาน Nginx ส่วนนี้จะอธิบายวิธีการกำหนดค่า UFW และเสริมความปลอดภัยของ Nginx

การเปิดพอร์ตด้วย UFW

UFW ถูกติดตั้งโดยค่าเริ่มต้นบน Ubuntu เพื่อเปิดใช้งานการสื่อสาร Nginx ให้เปิดพอร์ตที่จำเป็น:

  1. ตรวจสอบสถานะ UFW
    sudo ufw status
    
  1. ใช้กฎ Nginx
    sudo ufw allow 'Nginx Full'
    
  1. เปิดใช้งาน UFW
    sudo ufw enable
    

การเสริมความปลอดภัยเพิ่มเติม

  1. ปิดใช้งานเมธอด HTTP ที่ไม่จำเป็น
    if ($request_method !~ ^(GET|POST|HEAD)$) {
        return 444;
    }
    
  1. ปิดใช้งานการแสดงรายการไดเรกทอรี
    autoindex off;
    
  1. เสริม SSL/TLS
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;
    

6. การปรับแต่งประสิทธิภาพ Nginx และการแก้ไขปัญหา

Nginx มีชื่อเสียงในด้านประสิทธิภาพ แต่การปรับแต่งที่เหมาะสมสามารถปรับปรุงได้มากยิ่งขึ้น ส่วนนี้จะอธิบายวิธีการปรับให้เหมาะสมทรัพยากรและแก้ไขปัญหาทั่วไป

การปรับแต่งประสิทธิภาพ

1. กำหนดค่ากระบวนการ Worker

แก้ไข /etc/nginx/nginx.conf และปรับให้เหมาะสมจำนวนกระบวนการ worker:

worker_processes auto;

2. เพิ่มการเชื่อมต่อ Worker

worker_connections 1024;

3. เปิดใช้งาน HTTP/2

listen 443 ssl http2;
sudo systemctl reload nginx

4. เปิดใช้งานการบีบอัด

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5. กำหนดค่าการแคช

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    access_log off;
}

ปัญหาทั่วไปและวิธีแก้ไข

1. คำขอช้าภายใต้โหลดสูง

  • สาเหตุ: กระบวนการ worker หรือการตั้งค่าการเชื่อมต่อไม่เพียงพอ
  • วิธีแก้ไข: ปรับพารามิเตอร์ worker หรือนำการแบ่งโหลดมาใช้

2. ข้อผิดพลาด 403 Forbidden

  • สาเหตุ: เส้นทาง root ไม่ถูกต้องหรือสิทธิ์ไม่เหมาะสม
  • วิธีแก้ไข:
  • ตรวจสอบ directive root และแก้ไขสิทธิ์โดยใช้:
  • bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html

3. หมดเวลาบนเซิร์ฟเวอร์

  • สาเหตุ: การประมวลผลคำขอของไคลเอนต์ใช้เวลานานเกินไป
  • วิธีแก้ไข:
    proxy_read_timeout 300;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
    

4. ข้อผิดพลาดในการรีสตาร์ท

  • สาเหตุ: ปัญหาไวยากรณ์การกำหนดค่า
  • วิธีแก้ไข:
    sudo nginx -t
    

7. สรุปและขั้นตอนถัดไป

บทความนี้ได้อธิบายวิธีการติดตั้ง กำหนดค่า และจัดการ Nginx บน Ubuntu มาทบทวนสิ่งที่คุณได้เรียนรู้และระบุขั้นตอนถัดไปที่เป็นไปได้

ทบทวนบทความ

1. การติดตั้ง Nginx บน Ubuntu

. เตรียมแพคเกจที่จำเป็นและเรียนรู้วิธีติดตั้ง Nginx ด้วย APT
ตั้งค่าไฟร์วอลล์ (UFW) เพื่ออนุญาตการจราจรของ Nginx

2. การกำหนดค่าเบื้องต้น

  • เรียนรู้ตำแหน่งไฟล์, การตั้งค่า virtual host, และการกำหนดค่า SSL/TLS

3. การดำเนินการจัดการ

  • เชี่ยวชาญคำสั่งเริ่ม, หยุด, รีสตาร์ท, รีโหลด, และการตรวจสอบบันทึก

4. ไฟร์วอลล์และความปลอดภัย

  • เปิดพอร์ตที่จำเป็นโดยใช้ UFW และปิดการใช้งานวิธี HTTP ที่ไม่จำเป็น

5. การปรับจูนประสิทธิภาพและการแก้ไขปัญหา

  • ปรับแต่งกระบวนการ worker, เปิดใช้งาน HTTP/2, กำหนดค่าการแคช, และแก้ไขปัญหาทั่วไป

ขั้นตอนต่อไป

ตอนนี้คุณเข้าใจขั้นตอนการติดตั้งและกำหนดค่าพื้นฐานของ Nginx บน Ubuntu แล้ว, พิจารณาเดินหน้าต่อไป:

  1. เรียนรู้การกำหนดค่า Nginx ขั้นสูง
  • ศึกษาคุณสมบัติการทำ load balancing และ reverse proxy
  • ทดลองโมดูลเพิ่มเติมเช่นโมดูล Nginx RTMP
  1. เพิ่มความปลอดภัย
  • พิจารณาการใช้ Web Application Firewall (WAF)
  1. แนะนำการอัตโนมัติ
  • ใช้ Ansible หรือ Docker เพื่ออัตโนมัติการกำหนดค่าและการปรับใช้
  1. ใช้เครื่องมือการตรวจสอบและการปรับประสิทธิภาพ
  • ใช้ Prometheus หรือ Grafana เพื่อแสดงผลและตรวจสอบประสิทธิภาพ

ความคิดสุดท้าย

Nginx เป็นเว็บเซิร์ฟเวอร์ที่เร็วและยืดหยุ่น สามารถรองรับการใช้งานที่หลากหลายเมื่อกำหนดค่าอย่างถูกต้อง นำสิ่งที่คุณได้เรียนรู้ไปใช้ในโครงการจริงและต่อเนื่องสำรวจคุณลักษณะเพิ่มเติมผ่านเอกสารอย่างเป็นทางการของ Nginx และแหล่งชุมชน

หวังว่าคู่มือนี้จะช่วยให้คุณจัดการเว็บเซิร์ฟเวอร์ของคุณได้อย่างมีประสิทธิภาพมากขึ้น!