Ssl
為什麼 IP 地址的重寫規則顯示“不安全”而域名在 Apache2 中執行良好?
我為此創建了 ssl 證書,因此我在
myDomain.com
下面看到了以下 3 個文件/etc/apache2/sites-enabled``Ubuntu
example.com-le-ssl.conf example.com.conf example.conf
我的
example.com.conf
長相是這樣的<VirtualHost *:80> ServerAdmin admin@example ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com JKMount /* ajp13_worker ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =www.example.com [OR] RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
現在,如果我輸入
http://www.example.com
它會被重定向到https://www.example.com
但是如果有人發現我的伺服器 ip 地址並輸入
http://<myIpAddress>
內容是作為非 https所以我在上面的 virtualHost 塊之外添加了這個
<VirtualHost myIpAddr:80> ServerAdmin admin@example ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com JKMount /* ajp13_worker ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =myIpAddr [OR] RewriteCond %{SERVER_NAME} =myIpAddr:80 RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
這是因為您的 SSL 證書包含您的主機名(example.com 和 www.example.com),但不包含您的 IP 地址。也不應該 - 普通客戶端只會使用您的實際域名,而不是您的伺服器的 IP 地址。
根據您顯示的配置,您的重定向應該轉到主機名而不是 IP 地址,並且僅根據您的配置無法看出為什麼會出錯。但我不太明白為什麼你認為你需要為你的 IP 地址設置一個單獨的虛擬主機,或者你為什麼需要對 Host 標頭進行 RewriteCond 匹配。
我應該從您的文件中刪除 RewriteCond 行,只保留 RewriteRule 行。
還要檢查你得到的第三個文件——通常不應該同時存在
example.com.conf
和example.conf
。該文件中可能有一些內容在使用 IP 地址進行配置之前被讀取。