ทำ nginx proxy_pass ไปยัง docker web server

สร้างและรัน docker ที่ expose พอร์ท 80 ของ web server ไปยังพอร์ทใดๆ
เช่น ตั้งค่าใน docker compose

ports:
  - "8800:80"

ลง nginx

sudo apt install nginx

สร้างไฟล์ sites-available

รันคำสั่ง

sudo vi /etc/nginx/sites-available/**your_domain**

ใส่เนื้อหาในไฟล์

server {
  listen 80;
  server_name  **your_domain**;
  location / {
    proxy_set_header Host $http_host;
    proxy_set_header  X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for; 
    proxy_pass  http://localhost:***port***;
  }
}

ทำการ enable site โดยรัน

sudo ln -s /etc/nginx/sites-available/**your_domain** /etc/nginx/sites-enabled/

จากนั้น restart ทดสอบการ config และรีสตาร์ท nginx โดยรัน

sudo nginx -t
sudo systemctl restart nginx

สร้าง SSL โดย Apache certbot

ลง certbot โดยรัน

sudo apt install certbot python3-certbot-nginx

แล้วรัน certbot โดยระบุโดเมนที่ต้องการ (สามารถทำทีละหลายๆโดเมนได้โดยเว้นว่างระหว่างโดเมน)

sudo certbot --nginx -d **your_domain**

ตรวจสอบสถานะ และทดสอบรัน certbot

sudo systemctl status certbot.timer
sudo certbot renew --dry-run