我有一个带有 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