我有两个域名和一个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的虚拟主机只处理该域。
我将使用的虚拟主机是:
您可以使用端口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>