在一个IP上设置两个https,两个域也是如此

我有两个域名和一个IP。 两个域在端口80上侦听。另外在端口443上侦听一个域(来自这两个域)。 但也有可能仅通过IP访问其中一个域。 我阻止了端口80上的IP,这很好。 现在的问题是,使用https(端口443)和IP,任何人都可以从其中一个域访问页面。 我怎样才能从IP访问分离两个域名?

domain1 listens on 80 only - this is ok domain2 listens on 80 and 443 - this is ok IP listens on 80 and 443 but must be blocked - don't know how to set it 

为443设置一个VirtualHost,但尝试第二个不被Apache接受。 一切都设置在apache2 Raspberry Pi(Raspbian)上。

编辑

我拥有的是:

ports.conf文件:

 ServerName localhost NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> NameVirtualHost *:443 ServerName 1st_domain.pl Listen 443 </IfModule> 

ip.addr.file:

 <VirtualHost *:80> ServerName my.ip.address.here ServerAlias my.ip.address.here <Directory /*> Deny from all </Directory> </VirtualHost> 

1st_domain文件:

 <VirtualHost *:80> ServerName 1st_domain.pl ServerAlias www.1st_domain.pl ... </VirtualHost> <VirtualHost *:443> ServerName 1st_domain.pl ServerAlias www.1st_domain.pl ... SSLEngine on SSLCertificateFile ...crt SSLCertificateKeyFile ...key </VirtualHost> 

2nd_domain文件:

 <VirtualHost *:80> ServerName 2nd_domain.pl ServerAlias www.2nd_domain.pl ... </VirtualHost> 

如果您只希望通过HTTPS访问一个域,请configuration侦听端口443的虚拟主机只处理该域。

我将使用的虚拟主机是:

  • 端口80上的域1:可通过名称或IP地址访问(也处理所有无效的域)
  • 端口80上的域2:只能通过名称访问
  • 端口443上的域2:响应所有HTTPS请求

您可以使用端口443上的默认域,使用您正在服务的域的SSL密钥来捕获其他域的请求。 (如果您想在一个IP上托pipe多个HTTPS域,您可以在证书上使用别名,但我还没有设法使证书协商起作用。)

如果您不想在没有Host头的情况下响应请求,请创build一个默认的虚拟主机并使其失败所有请求。 这可以用modRewrite来完成,也可以通过将域名放在服务器无法读取的目录中。

很难解释没有看到你的确切configuration,但;

看看http://httpd.apache.org/docs/2.2/vhosts/examples.html ,这很好解释。

 # Ensure that Apache listens on port 80 Listen 80 Listen 443 <VirtualHost *:443> DocumentRoot /www/example1 ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot /www/example1 ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot /www/example2 ServerName www.example.org # Other directives here </VirtualHost>