У меня есть экземпляр Google Compute (Debian 8 и Apache), работающий с использованием пересылки протокола Google Compute, чтобы иметь возможность использовать несколько внешних IP-адресов с одним экземпляром виртуальной машины:
Перенаправление протокола вычислений Google (полная статья)
Google Compute Engine поддерживает переадресацию протоколов, которая позволяет создавать объекты правил пересылки, которые могут отправлять пакеты в целевой экземпляр без NAT. Каждый целевой экземпляр содержит один экземпляр виртуальной машины, который получает и обрабатывает трафик из соответствующих правил пересылки.
Эта проблема
Я не могу посетить один из доменов виртуального хоста / IP через порт 443. Мне это нужно, потому что я хочу включить 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 - это сертификат и ключ