Apache-Httpd

ssl_module 在哪裡載入,為什麼我不能綁定到埠 443?

  • January 11, 2018

當我嘗試啟動 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 -Xhttpd -X根據您的建構從終端會話執行伺服器。您可以使用-e標誌增加詳細程度。命令-S標誌將轉儲配置。頁面中記錄了其他標誌man

-M標誌將列出載入的模組。SSL 通常作為一個模組提供,需要先載入才能啟用 HTTPS。

引用自:https://unix.stackexchange.com/questions/300150