Apache ServerName 不在任何虚拟主机中,但仍被重定向到 https

Apache ServerName 不在任何虚拟主机中,但仍被重定向到 https

我已启用三个虚拟主机

  • 000-default.conf (*:80) => 应该是其他任何虚拟主机中不存在的所有内容的默认值
  • domain.conf (*:80 重定向到 https) => ServerAlias domain.local
  • domain-le-ssl.conf (*:443)(由 certbot 制作)=> ServerAlias domain.local

我的情况是,我可以使用 IP 地址访问我的 Web 服务器并进入 000-default.conf 中的根目录,但如果我尝试任何其他域(如 example1.local),它会转到 https 并抛出 SSL 证书错误,因此我得出结论,它使用了 domain.conf 虚拟主机。

我如何确保 000-default.conf 也能捕获其他虚拟主机中没有的 ServerNames?

我尝试过的:在 000-default.conf 中

VirtualHost _default_:80>

ServerAlias *

我的三个虚拟主机:

<VirtualHost _default_:80>
    ServerAlias *
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/dir1
    <Directory /var/www/dir1>
    AuthType basic
    AuthName "Please login."
    AuthUserFile /etc/apache2/apache.htpasswd
    Require valid-user
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerName www.example.be
    ServerAlias example.be
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.be
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName example.be
    ServerAlias www.example.be
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/example
SSLCertificateFile /etc/letsencrypt/live/www.example.be/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.be/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/www.example.be/chain.pem
</VirtualHost>
</IfModule>

答案1

如果您只想在一个域上使用 SSL VirtualHost,请相应地设置ServerNameServerAlias指令。任何不匹配的内容都将落入默认 VirtualHost。为了清楚起见,您可能还想用数字来标识配置文件的顺序。

笔记:如果任何流量到达 SSL VirtualHost 中配置的端口时,它将始终以 HTTPS 形式提供服务,并且如果主机名与证书不匹配,则会显示证书错误。


例如:

000-默认.conf

<VirtualHost *:80>
  ServerName myserver.example.local
  ServerAlias example.local
  DocumentRoot /var/www/default

  ...

</VirtualHost>

001-域.conf

<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com
  Redirect permanent / https://www.domain.com/

  ...

</VirtualHost>

002-域-ssl.conf

<VirtualHost *:443>
  ServerName www.example.com
  ServerAlias example.com
  DocumentRoot /var/www/example.com

  ...

</VirtualHost>

相关内容