Debian
Apache2 SSL 僅在刪除虛擬主機時才有效?
我正在創建一個託管在sparrowthenerd.space的網站,我試圖讓它使用多個子域,這樣我就可以從同一個 IP 地址執行 NextCloud、OctoPrint 和一個通用網頁。據我了解,這可以通過 Apache2 中的 VirtualHosts 來完成。但是,除非我從我的 conf 文件(如下)中刪除 virtualhost 標籤,否則我會在啟用 CloudFlare 的情況下收到 SSL 握手錯誤,如果沒有它,則會收到 SSL 協議錯誤。
我在 Debian 11 Bullseye 上使用 Apache2 v2.4.52。Web 伺服器是自託管的,並通過代理在埠 9999 上使用 NodeJS(我認為這是正確的術語?)。
#<VirtualHost xxx:xx:xx:xxx:443> ServerAdmin webmaster@localhost ServerName sparrowthenerd.space DocumentRoot /var/www/sparrowthenerd ProxyPass /.well-known/ ! ProxyPass / http://localhost:9999/ ProxyPassReverse / http://localhost:9999/ ProxyPreserveHost On SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCertificateFile /etc/apache2/ssl/sparrowthenerd.space.pem SSLCertificateKeyFile /etc/apache2/ssl/sparrowthenerd.space.key ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www> AllowOverride none Order Allow,Deny Allow from all </Directory> #</VirtualHost>
當虛擬主機標籤未註釋時,我收到錯誤消息。當他們被評論時,我沒有,但我也不能添加額外的子域。我正在使用帶有 Cloudflare SSL 證書的 CloudFlare 代理伺服器。如果您需要更多資訊,請告訴我,我很樂意提供!
原來我是個白痴,並將我的內部埠 80 轉發到外部埠 443,因此伺服器接收的是 HTTP 請求而不是 HTTPS 並拋出錯誤。
VirtualHost
您的指令中不應包含 IP 地址。您應該讓 Apache 綁定到那裡的所有介面:<VirtualHost *:443>