我有一个 Google Compute 实例(Debian 8 和 Apache),使用 Google Compute 协议转发运行,以便能够在一个虚拟机实例中使用多个外部 IP 地址:
Google 计算协议转发(全文)
Google Compute Engine 支持协议转发,让您可以创建转发规则对象,以便将数据包发送到非 NAT 目标实例。每个目标实例都包含一个虚拟机实例,用于接收和处理来自相应转发规则的流量。
问题
我无法通过端口 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。
答案1
在 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 是证书和密钥