##### 前置條件 > 網域需在Cloudflare購買 > 已在AWS申請彈性IP並已關連到EC2主機 ## 新增DNS紀錄 1. 在DNS > 紀錄 頁面 點選"新增紀錄" 2. 類型選擇"A",名稱自訂,IPv2位址填入要關聯的彈性IP 3. Proxy 狀態 建議勾選 ## 設定SSL/TLS (取得HTTPS認證) 1. 在SSL/TLS > 概觀 頁面,點選 "設定" 2. 選擇"完整(嚴格)" 3. 回到上一頁,點選"原始伺服器" 4. 點選"建立憑證",選擇"使用 Cloudflare 產生私密金鑰和 CSR"後點選"建立" > 選擇完後在設定完SSL之前會無法連到網域 5. Cloudflare 會生成一組原點憑證和私密金鑰,請先記錄下來,後續會用到 ## 設定EC2主機 1. 安裝Nginx ``` 安裝Nginx sudo apt update sudo apt install nginx 啟動服務 sudo systemctl start nginx 設定為開機自動啟動 sudo systemctl enable nginx 查看Nginx狀態 (確認是否正確啟動) sudo systemctl status nginx ``` 2. 儲存原點憑證 > 將上一個步驟生成的原點憑證複製下來,並貼到cloudflare.crt檔案後儲存 新增憑證檔案 ``` sudo nano /etc/ssl/certs/cloudflare.crt ``` 3. 儲存私密金鑰 > 將上一個步驟生成的私密金鑰複製下來,並貼到cloudflare.key檔案後儲存 新增金鑰檔案 ``` sudo nano /etc/ssl/private/cloudflare.key ``` 修改存取權限 ``` sudo chmod 400 /etc/ssl/private/cloudflare.key ``` 4. 編輯Nginx設定檔 開啟Nginx設定檔 ``` sudo nano /etc/nginx/sites-available/default ``` 貼上以下設定參數 ``` # HTTP 伺服器 - 重定向到 HTTPS server { listen 80; listen [::]:80; server_name 換成自己的domain www.換成自己的domain; return 301 https://$host$request_uri; } # HTTPS 伺服器 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name 換成自己的domain www.換成自己的domain; # SSL 證書配置 ssl_certificate /etc/ssl/certs/cloudflare.crt; ssl_certificate_key /etc/ssl/private/cloudflare.key; # HSTS 配置 add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always; # 反向代理配置 location / { proxy_pass http://127.0.0.1:3000; #設定要導向的port 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; } } ``` 確認Nginx設定檔是否正確 ``` sudo nginx -t ``` 重啟Nginx ``` sudo systemctl restart nginx ``` 5. 重啟後若能正常連線到網域代表設定完成