Назад | Перейти на главную страницу

Невозможно посетить виртуальный хост через порт 443

У меня есть экземпляр 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 - это сертификат и ключ