我试图build立一个Apache的Ubuntu的PHP的Web服务器。 我的networking服务器将托pipe多个SSL站点,每个SSL站点将拥有自己的IP地址(除非有更好的方法来做到这一点)。
所以我想第一步是让Apache能够识别至less两个不同的IP地址。 现在,我有一个网站的SSL和非SSL版本,这是http://mysite.com和https://mysite.com 。 虽然两者都在我的服务器上运行,但我不能同时使用不同的IP地址。 目前,两者都使用IP 1.1.1.1。 我购买了第二个IP地址2.2.2.2,但是https://mysite.com不会接受它,而且firefox抱怨错误“ssl_error_rx_record_too_long”。 这里看看我的2个虚拟主机文件
/ 000-缺省的/ etc / apache2的/启用站点
#NameVirtualHost 1.1.1.1:80 #<VirtualHost 1.1.1.1:80> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
/etc/apache2/site-enabled/mysite.com
<VirtualHost 1.1.1.1:80> ServerAdmin [email protected] ServerName mysite.com ServerAlias www.mysite.com DocumentRoot /srv/www/mysite.com/public_html/ ErrorLog /srv/www/mysite.com/logs/error.log CustomLog /srv/www/mysite.com/logs/access.log combined </VirtualHost> <IfModule mod_ssl.c> #<VirtualHost 2.2.2.2:443> <VirtualHost *:443> ServerAdmin [email protected] ServerName mysite.com ServerAlias www.mysite.com DocumentRoot /srv/www/mysite.com/public_html/ ErrorLog /srv/www/mysite.com/logs/error.log CustomLog /srv/www/mysite.com/logs/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/localcerts/www.mysite.com.crt SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite.com.pem <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost> </IfModule>
在mysite.com中,如果我用<VirtualHost 2.2.2.2:443>replace<VirtualHost *:443>,Firefox会报错“ssl_error_rx_record_too_long”。
所以当我尝试在第三个IP地址上创build并启用/etc/apache2/site-enabled/mysite2.com与另一个SSL证书时,Apache抱怨“重叠”问题。
有人可以告诉我如何起床我的服务器,以便我可以在不同的域上托pipe多个SSL网站? 我希望SSL证书在WinXP,Vista,Win7和OSX等stream行操作系统上适用于IE 7+,FF和Safari。
我已经通过调整/etc/apache2/ports.conf文件在我的服务器上设置了它,如下所示:
<IfModule mod_ssl.c> NameVirtualHost *:443 # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here NameVirtualHost *:443 Listen 443 </IfModule>
然后你可以通过编辑/etc/apache2/sites-enabled/mysite.com来使用(省略了一些代码来缩短例子):
<VirtualHost *:443> ServerName mysite1.com SSLCertificateFile /etc/ssl/localcerts/www.mysite1.com.crt SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem </VirtualHost> <VirtualHost *:443> ServerName mysite2.com SSLCertificateFile /etc/ssl/localcerts/www.mysite2.com.crt SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem </VirtualHost>
尽可能多的虚拟主机,只要你喜欢。
编辑: 需要第二个意见? 去这里: http : //forum.slicehost.com/comments.php? DiscussionID= 3244
我目前无法检查,所以这只是一个疯狂的猜测:文件通常按字母顺序阅读。 如果按照相反顺序读取,可能会有更多的运气,例如将000-default重命名为500-default,并使用400-myhost。 我不记得apache喜欢拥有默认主机 – 首先还是最后一个。 但从你说的话(重叠)来看,这可能是最后一个