題 如何創建適用於http和https的虛擬主機?


這就是我設置虛擬主機的方式:

<VirtualHost mysite> 
  <Directory "/Users/myusername/sitefolder"> 
    Options +FollowSymlinks
    AllowOverride All 
    Order Allow,Deny
    Allow from all
  </Directory> 
  DocumentRoot "/Users/myusername/sitefolder"
  ServerName mysite
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

使用此配置,我只能使用https查看我的網站,但不能查看http。 當我關閉SSLEngine然後我無法用https查看我的網站,但http工作正常。

如何調整以上行,以便能夠使用http和https查看我的網站?

我使用的是OSX Lion,但我認為這並不重要。

謝謝。


8
2017-07-31 19:31


起源




答案:


您需要創建兩個虛擬主機:

<VirtualHost mysite:80> 
  <Directory "/Users/myusername/sitefolder"> 
    Options +FollowSymlinks
    AllowOverride All 
    Order Allow,Deny
    Allow from all
  </Directory> 
  DocumentRoot "/Users/myusername/sitefolder"
  ServerName mysite
</VirtualHost>


<VirtualHost mysite:443> 
  <Directory "/Users/myusername/sitefolder"> 
    Options +FollowSymlinks
    AllowOverride All 
    Order Allow,Deny
    Allow from all
  </Directory> 
  DocumentRoot "/Users/myusername/sitefolder"
  ServerName mysite
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

第一個是常規 HTTP 主持人,而第二個處理你的 HTTPS 交通。


7
2017-07-31 19:57



有沒有辦法將公共代碼移動到不同的文件中並#include它以使維護更容易? - Ponkadoodle


你也可能想用 Include 指令,因此您不必在兩個虛擬主機之間複製配置 - http://httpd.apache.org/docs/2.2/mod/core.html#include


1
2018-02-08 09:34