Apache-2.2

使用 apache2 設置子域以響應:443

  • December 12, 2012

我閱讀了一些關於此的指南,我相信可以讓 apache 通過 ssl 響應子域。我的 domain.com 在 80 上響應,我不需要 domain.com 在 443 上響應。相反,我對 ssl 的唯一用途是用於子域 sub.domain.com。

所以我的網站應該是

http://domain.com
http://www.domain.com
https://sub.domain.com
https://www.sub.domain.com

我的 CNAME 記錄如下

 sub.domain.com xxx.xx.xx.xxx
 *.sub.domain.com xxx.xx.xx.xxx

A 記錄存在,但對於範例而言應該無關緊要。

我在為 sub.domain.com 啟用的站點中設置了一個單獨的配置文件

NameVirtualHost xxx.xx.xx.xxx:443

<VirtualHost xxx.xx.xx.xxx:443>
   SSLEngine on
   SSLStrictSNIVHostCheck on
   SSLProtocol -ALL +SSLv3 +TLSv1
   SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:-MEDIUM

   ServerAlias sub.domain.com

   DocumentRoot /usr/local/www/ssl/documents/

   SSLCertificateFile /root/sub.domain.com.crt
   SSLCertificateKeyFile /root/sub.domain.com.key


   Alias /robots.txt /usr/local/www/ssl/documents/robots.txt
   Alias /favicon.ico /usr/local/www/ssl/documents/favicon.ico

   Alias /js/libs /usr/local/www/ssl/documents/js/libs
   Alias /media/ /usr/local/www/documents/media/
   Alias /img/ /usr/local/www/ssl/documents/img/
   Alias /css/ /usr/local/www/ssl/documents/css/

   <Directory /usr/local/www/ssl/documents/>
   Order allow,deny
   Allow from all
   </Directory>

   WSGIDaemonProcess sub.domain.com processes=2 threads=7 display-name=%{GROUP}
   WSGIProcessGroup sub.domain.com

   WSGIScriptAlias / /usr/local/www/wsgi-scripts/script.wsgi

   <Directory /usr/local/www/wsgi-scripts>
   Order allow,deny
   Allow from all
   </Directory>
</VirtualHost>

現在,重要的是要提到https://domain.com響應我從上面的 script.wsgi 而不是https://sub.domain.com執行的內容。它不響應 sub.domain.com。檢查https://sub.domain.com會導致 105 錯誤。這是一個 DNS 錯誤,但我確信 DNS 的 CNAME 記錄沒有問題,它們只是指向我的 IP。我在做 Apache 做不到的事情嗎?

您不使用 CNAME 將 dns 名稱指向 IP 地址,您需要一個 A 記錄。您只能使用 CNAME 將規範名稱指向另一個規範名稱:

名稱記錄:

host.server.com —> 2ndHost.server.com

一個記錄:

server.com —> 192.0.2.23

或者您可以使用 DNAME,DNAME 記錄為域的一個或多個子域創建別名。相反,CNAME 記錄只創建一個名稱的別名

引用自:https://serverfault.com/questions/457543