我有一个使用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是证书和密钥