我的httpd.conf
顯示它正在偵聽連接埠 80。
#Listen 12.34.56.78:80
Listen 80
但是我的虛擬主機顯示連接埠 443,我該如何更改?這是我問題的根源嗎?
更新
'虛擬主機預設:443' = /etc/httpd/conf.d/ssl.conf
這告訴我虛擬主機是正確的。我覺得我可以從這個場景中刪除所有與 443 相關的資訊來得到答案。
/etc/httpd/conf.d/ssl.conf:<VirtualHost _default_:443>
/etc/httpd/conf.d/ssl.conf:#ServerName www.example.com:443
/etc/httpd/conf.d/ssl.conf.rpmnew:Listen 443 https
/etc/httpd/conf.d/ssl.conf.rpmnew:<VirtualHost _default_:443>
/etc/httpd/conf.d/ssl.conf.rpmnew:#ServerName www.example.com:443
這是
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.
我正在努力學習類似的線程。我使用的是 Fedora,所以我的理解有點不同。
systemctl status httpd.service
說:
httpd[1182]: AH00526: Syntax error on line 18 of /etc/httpd/conf.d/ssl.conf:
18 號線說 |聽80
httpd[1182]: Cannot define multiple Listeners on the same IP:port
systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: httpd.service: Failed with result 'exit-code'.
systemd[1]: Failed to start The Apache HTTP Server.
/etc/httpd/conf.d.ssl.conf | 第 18 行Listen 80
這就是我感到困惑的地方,因為grep '443' /etc/httpd/conf.d/*
我的文件顯示ssl.conf
為 443,但當我閱讀httpd.conf
文件時,我看到這裡12.34.56.78:80
是一個預防性 IP。因此我應該在這裡添加我的機器 IP 並監聽 80 和 443。
答案1
該錯誤似乎表明您Listen
的 Apache 設定檔中可能有多個指令指定相同的 IP/連接埠 80 組合。
Listen
(作為一般規則)應該只在httpd.conf
(例如 as Listen 80
)和預設 SSL 配置(例如 as Listen 443
)中出現一次。
Listen
雖然同一連接埠(例如 80)上可以有多個指令,但它們都必須具有不同的 IP:連接埠組合。
Listen
因此我應該在此處以及80 和 443 上添加我機器的 IP 。
阿帕契聽指令可以採用兩種通用形式:「每個 IP」和「全域」(所有可用 IP):
# Per IP
# Listen 12.34.56.78:80
# Global (i.e includes ex. 12.34.56.78)
Listen 80
上面的配置有效。類似下面的內容通常也可以運作(假設您的系統有多個 IP):
# Per IP
Listen 12.34.56.78:80
Listen 23.56.78.90:80
# Global (i.e includes ex. 12.34.56.78)
# Listen 80
這可能不起作用(即 Apache 將無法啟動):
# Per IP
Listen 12.34.56.78:80
# Global (i.e includes ex. 12.34.56.78)
Listen 80