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

SSL и ProxyPass

js-сервер, работающий на 8200 и я только что получил сертификаты SSL для своего домена. Я хочу иметь возможность обслуживать свою страницу по HTTPS.

Пока мой файл конфигурации apache выглядит так

Файл: /etc/apache2/sites-enabled/synsis.conf

<VirtualHost *:443>
  ServerAdmin sova.k@gmail.com
  ServerName  www.synsis.live
  ServerAlias synsis.live

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/home/vas/synsis.live/certs/domain.crt"
  SSLCertificateKeyFile "/home/vas/synsis.live/certs/domain.key"
  SSLCertificateChainFile "/home/vas/synsis.live/certs/intermediate.pem"


  ProxyRequests Off
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

<Location />
  ProxyPass  https://localhost:8200/
  ProxyPassReverse  https://localhost:8200/
</Location>
</VirtualHost>

Однако мой сайт не загружается с использованием этой конфигурации. Любые идеи?

apachectl -t

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

и apachectl -S

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost ch.mu (/etc/apache2/sites-enabled/c.conf:1)
         port 80 namevhost www.hai.run (/etc/apache2/sites-enabled/hai.conf:3)
                 alias hai.run
         port 80 namevhost practicalhuman.org (/etc/apache2/sites-enabled/ph.conf:4)
                 alias www.practicalhuman.org
*:443                  www.synthesis.live (/etc/apache2/sites-enabled/synthesis.conf:5)

ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used

Ваша конфигурация содержит три из моих основных претензий к примерам конфигурации в дикой природе

  1. Использование <Proxy *> блоки при настройке обратного прокси. <Proxy> блоки почти используется исключительно для настройки прямых прокси, а не обратных. В вашем случае это не нужно.
  2. Использование ProxyPass внутри блоков локации. Лучше всего использовать версию с двумя аргументами ProxyPass если нет альтернативы.
  3. Использование директив авторизации Apache v2.2 в Apache v2.4. Я настоятельно рекомендую всегда меняю все свои v2.2 Allow, Order, Satisfy и require директивы к новой версии 2.4 Require директива и <RequireAny> и <RequireAll> блоки.
  4. В SSLProxyEngine директива используется для настройки вашего сервера, когда вы проксируете к и службы на основе SSL и не имеет ничего общего с тем, является ли ваш фактический виртуальный хост SSL или нет (Да, я знаю, что сказал 3, но это очень незначительный, и я добавил его только потому, что вы ответили, что ваш сервер не был включен SSL :-)

Попробуйте следующее в качестве основы и, надеюсь, «очистите» настройку и продолжите работу. * если это не работает, расскажите нам, что происходит на самом деле, а не просто говорите «не работает».

<VirtualHost *:443>
  ServerAdmin sova.k@gmail.com
  ServerName  www.synsis.live
  ServerAlias synsis.live

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/home/vas/synsis.live/certs/domain.crt"
  SSLCertificateKeyFile "/home/vas/synsis.live/certs/domain.key"
  SSLCertificateChainFile "/home/vas/synsis.live/certs/intermediate.pem"

  # This is the default anyway, but no harm having it explicitly set
  ProxyRequests Off

  # You say in a comment your backend is not SSL, but your original configuration
  # tries to proxy to an SSL enabled service. This is almost certainly
  # why it originally failed
  ProxyPass / http://localhost:8200/
  ProxyPassReverse / http://localhost:8200/
</VirtualHost>

у вас бэкэнд ssl?

если не:

<VirtualHost *:443>
  ServerAdmin sova.k@gmail.com
  ServerName  www.synsis.live
  ServerAlias synsis.live

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/home/vas/synsis.live/certs/domain.crt"
  SSLCertificateKeyFile "/home/vas/synsis.live/certs/domain.key"
  SSLCertificateChainFile "/home/vas/synsis.live/certs/intermediate.pem"


  ProxyRequests Off
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

<Location />
  ProxyPass  http://localhost:8200/
  ProxyPassReverse  http://localhost:8200/
</Location>
</VirtualHost>

если это:

<VirtualHost *:443>
  ServerAdmin sova.k@gmail.com
  ServerName  www.synsis.live
  ServerAlias synsis.live

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/home/vas/synsis.live/certs/domain.crt"
  SSLCertificateKeyFile "/home/vas/synsis.live/certs/domain.key"
  SSLCertificateChainFile "/home/vas/synsis.live/certs/intermediate.pem"


  ProxyRequests Off
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

<Location />
  SSLProxyEngine on
  ProxyPass  https://localhost:8200/
  ProxyPassReverse  https://localhost:8200/
</Location>
</VirtualHost>