改 Web Server 設定時,順序應該是備份、語法檢查、列出實際載入設定、重新載入、再從外部驗證。設定檔寫對不等於 DNS、TLS、上游與防火牆都對。
動手前:不要直接改正式檔後 restart。先確認 include 順序與 virtual host 命中結果;憑證私鑰、Basic Auth 檔與 log 都可能含敏感資料。
Nginx 設定與狀態
查看 Nginx 版本Nginx
nginx -v簡短顯示版本。
查看編譯參數Nginx
nginx -V包含模組、OpenSSL 與預設路徑。
檢查設定語法Nginx
sudo nginx -t成功後才 reload;仍不保證上游可用。
輸出完整合併後設定Nginx
sudo nginx -T可能含內部位址與路徑,分享前遮蔽。
找出 server_nameNginx
sudo nginx -T 2>&1 | grep -n 'server_name'用來排查重複或 default server。
重新載入設定Nginx/systemd
sudo systemctl reload nginx先 nginx -t;reload 失敗要看 journal。
查看服務狀態Nginx/systemd
systemctl status nginx --no-pager搭配 journalctl 看完整錯誤。
查看近期服務 logNginx/systemd
journalctl -u nginx --since '30 minutes ago' --no-pagerNginx 自身 access/error log 可能在別處。
追蹤 error logNginx
sudo tail -F /var/log/nginx/error.log實際路徑依發行版與設定。
追蹤特定狀態碼Nginx
sudo awk '$9 ~ /^5/ {print}' /var/log/nginx/access.log | tail -50欄位位置取決於 log_format,先看格式。
Apache 設定與 Virtual Host
查看 Apache 版本Apache
apachectl -v有些系統命令是 apache2ctl。
檢查設定語法Apache
sudo apachectl configtest看到 Syntax OK 才進下一步。
列出 Virtual Host 對應Apache
sudo apachectl -S可看預設 vhost、port 與設定檔行號。
列出已載入模組Apache
sudo apachectl -M確認 rewrite、ssl、proxy 等模組。
顯示完整啟動設定Apache
sudo apachectl -t -D DUMP_RUN_CFG不同平台輸出支援度略有差異。
重新載入 ApacheApache/systemd
sudo systemctl reload apache2RHEL 系列服務名稱通常是 httpd。
RHEL 系列重新載入Apache/systemd
sudo systemctl reload httpd先用 systemctl status 確認服務名。
查看 Apache 近期 journalApache/systemd
journalctl -u apache2 --since '30 minutes ago' --no-pagerRHEL 系列換成 httpd。
追蹤 Apache error logApache
sudo tail -F /var/log/apache2/error.log路徑依發行版與 vhost 設定。
外部驗證與上游
帶 Host header 測 HTTP vhostcurl
curl -i -H 'Host: www.example.com' http://127.0.0.1/只適用 HTTP;HTTPS 還要正確 SNI。
指定 IP 測 HTTPS SNIcurl
curl --resolve www.example.com:443:127.0.0.1 -I https://www.example.com/同時保留正確 Host 與 SNI。
查看回應時間拆解curl
curl -sS -o /dev/null -w 'connect=%{time_connect} first=%{time_starttransfer} total=%{time_total}\n' https://www.example.com/可區分連線與上游處理時間。
確認本機監聽 PortLinux
sudo ss -lntp | grep -E ':(80|443)\b'監聽不等於外部防火牆已放行。
怎麼確認有做對
- 語法檢查成功後 reload,再確認程序沒有退出。
- 用實際 hostname、SNI 與外部來源測 HTTP status、內容與憑證。
- 觀察 reload 前後 error log 與 5xx 比例。
常見錯誤
- 語法沒驗就 restart。
- 只 curl localhost,沒有測真實 Host/SNI/DNS。
- 忽略 include 順序與 default virtual host。
- 把 502 全部歸咎 Nginx,沒查 upstream。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。