无法通过端口443访问虚拟主机

我有一个使用Google Compute协议转发的Google Compute实例(Debian 8和Apache),可以在一个虚拟机实例中使用多个外部IP地址:

Google计算协议转发(整篇文章)

Google Compute Engine支持协议转发,它允许您创build可以将数据包发送到未经NAT的目标实例的转发规则对象。 每个目标实例都包含一个虚拟机实例,该虚拟机实例接收并处理来自相应转发规则的stream量。

问题

我无法通过端口443访问其中一个虚拟主机域/ IP。我需要这个,因为我想在所有这些域上启用HTTPS。

我已经尝试了多个选项来实现打开端口443,但他们都没有工作:

选项1)基于虚拟名称的主机:

/etc/apache2/ports.conf

Listen 80 <IfModule ssl_module> NameVirtualHost *:443 Listen 443 </IfModule> <IfModule mod_gnutls.c> NameVirtualHost *:443 Listen 443 </IfModule> 

/etc/apache2/sites-enabled/example.com.conf

 <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/website1 </VirtualHost> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/website1 </VirtualHost> 

选项2)基于虚拟IP的主机:

/etc/apache2/ports.conf

 Listen 80 <IfModule ssl_module> NameVirtualHost *:443 Listen 443 </IfModule> <IfModule mod_gnutls.c> NameVirtualHost *:443 Listen 443 </IfModule> <VirtualHost 192.0.2.5> DocumentRoot /var/www/website1 <Directory /var/www/website1> Require all granted </Directory> </VirtualHost> ... 

这两个选项都适用于端口80,但不适用于端口443。

在ports.conf中你需要

 Listen 443 

并在/etc/apache2/sites-enabled/example.com.conf你需要:

 SSLEngine On SSLCertificateFile /path/to/file.pem SSLCertificateKeyFile /path/to/file.key 

其中file.pem和file.key是证书和密钥