Apache-Httpd
ssl_module 在哪裡載入,為什麼我不能綁定到埠 443?
當我嘗試啟動 httpd 時,出現以下錯誤:
# service httpd start || journalctl -xn .. [so:warn] [pid 425] AH01574: module ssl_module is already loaded, skipping httpd[425]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:443 httpd[425]: no listening sockets available, shutting
語法沒問題:
# httpd -t [so:warn] [pid 917] AH01574: module ssl_module is already loaded, skipping Syntax OK
好的。所以
ssl_module.so
被載入了兩次。除了它不是:# grep -ir ssl_module /etc/httpd/* /etc/httpd/conf.d/ssl.conf:LoadModule ssl_module modules/mod_ssl.so
它還說有些東西正在偵聽埠 443。除了沒有:
# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 336/sshd tcp6 0 0 :::22 :::* LISTEN 336/sshd
而且我只在我的 httpd 配置中聽過一次:
# grep -ir 443 /etc/httpd/* /etc/httpd/conf.d/ssl.conf:Listen 443 /etc/httpd/conf.d/ssl.conf:<VirtualHost *:443>
apache 沒有執行任何服務:
# top -u apache .. (nothing)
由於警告和套接字已在使用中的錯誤,這看起來好像 apache 正在某個地方載入其他一些 conf,該 conf 正在載入 ssl_module.so 並在埠 443 上偵聽。
但問題是..它在哪裡?
這是來自執行 CentOS Linux 版本 7.2.1511 的 VPS 配置。
問題最終成為 httpd.conf 中的重複行,導致 ssl.conf 被載入兩次。
有一行:
Include conf.d/*.conf
然後再往下:
IncludeOptional conf.d/*.conf
第一個被刪除,問題已經解決。
最簡單的調試方法是以調試模式
apache2 -X
或httpd -X
根據您的建構從終端會話執行伺服器。您可以使用-e
標誌增加詳細程度。命令-S
標誌將轉儲配置。頁面中記錄了其他標誌man
。該
-M
標誌將列出載入的模組。SSL 通常作為一個模組提供,需要先載入才能啟用 HTTPS。