更新:

更新:

我有一个带有 VirtualHost 的 Apache2,配置如下:

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它也适用于所有人*.我的域名.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

尝试捕获所有指向 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

相关内容