У меня Apache2 с одним VirtualHost настроен следующим образом:

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName gitlab.mydomain.com
  DocumentRoot /home/git/gitlab/public
  ProxyPass / http://127.0.0.1:9292/
  ProxyPassReverse / http://127.0.0.1:9292/

  ErrorLog  /var/log/apache2/gitlab/error.log
  CustomLog /var/log/apache2/gitlab/access.log combined
</VirtualHost>

Это работает для http://gitlab.mydomain.com. НО это также работает для всех * .mydomain.com, перенаправляющих на определенный выше VirtualHost.

Как я могу отключить все хосты, кроме gitlab.mydomain.com, чтобы abc.mydomain.com отвечал с http 404?

Обновить:

Можно ли сделать то же самое с 443? У меня уже есть bad_url:

NameVirtualHost *:80
<VirtualHost *:80>
   DocumentRoot /var/www/bad_url
   ServerName *
</VirtualHost>

NameVirtualHost *:443
<VirtualHost *:443>
   DocumentRoot /var/www/bad_url
   ServerName *
</VirtualHost>

Теперь я получаю сообщение об ошибке при запуске Apache:

Action 'start' failed.
The Apache error log may have more information.
 failed!

cat /var/log/apache2/error.log

[Wed Jul 31 03:09:05 2013] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)

Я вижу подсказку, но возможно ли это без добавления сертификата SSL?

1 ответ1

2

Попробуйте перехватить все, что указывает на папку http и имеет простой файл index.html, в котором говорится, что здесь не найден сервер или что-то в этом роде.

Кроме того, если вы собираетесь обслуживать gitlab, вы можете оставить это за SSL.

NameVirtualHost *:80
<VirtualHost *:80>
   DocumentRoot /var/www/bad_url
    ServerName *
</VirtualHost>

<VirtualHost *:80>
  ServerName gitlab.mydomain.com
  DocumentRoot /home/git/gitlab/public
  ProxyPass / http://127.0.0.1:9292/
  ProxyPassReverse / http://127.0.0.1:9292/

  ErrorLog  /var/log/apache2/gitlab/error.log
  CustomLog /var/log/apache2/gitlab/access.log combined
</VirtualHost>

РЕДАКТИРОВАТЬ:

Ваш SSL не работает должным образом, потому что вы, скорее всего, не установили / не включили модуль SSLEngine и не ссылаетесь на SSL-сертификат. Вот пример из моих 443 соединений.

   SSLEngine on
   SSLProtocol all -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

   SSLCertificateFile /var/certs/cert.crt
   SSLCertificateKeyFile /var/certs/cert.key
   SSLCertificateChainFile /var/certs/gd_bundle.crt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .