如何创建 VirtualHost 以进行直接 IP 访问?

如何创建 VirtualHost 以进行直接 IP 访问?

我的目标是当使用 IP 地址直接访问服务器时阻止 HTTP 和 HTTPS 流量,并强制特定站点使用 SSL。

然而,我收到了 CloudFlare 525 SSL 握手失败https://example.com

000-默认.conf

<VirtualHost *:80>
        Redirect 403 /
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
        Redirect 403 /
</VirtualHost>
</IfModule>

例如.com.conf

<VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/example.com/html
        RedirectPermanent / https://example.com
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName example.com
        DocumentRoot /var/www/example.com/html

        SSLEngine on
        SSLCertificateFile /var/www/example.com/.ssl/example.com.crt
        SSLCertificateKeyFile /var/www/example.com/.ssl/example.com.key
</VirtualHost>
</IfModule>

VirtualHost 配置

*:80                   is a NameVirtualHost
         default server 10.128.0.2 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost 10.128.0.2 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost examplecom (/etc/apache2/sites-enabled/example.com.conf:1)
*:443                  is a NameVirtualHost
         default server 10.128.0.2 (/etc/apache2/sites-enabled/000-default.conf:6)
         port 443 namevhost 10.128.0.2 (/etc/apache2/sites-enabled/000-default.conf:6)
         port 443 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:8)

答案1

我最终为我的 IP 地址创建了一个单独的自签名证书来解决这个问题。

000-默认.conf

<VirtualHost *:80>
        Redirect 403 /
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
        Redirect 403 /

        SSLEngine on
        SSLCertificateFile /var/www/self-signed.pem
</VirtualHost>
</IfModule>

答案2

在为 IP 地址实现 https 的 vhost 中,只需添加require all denied而不是重定向。恐怕您对证书错误无能为力(除了获取对 IP 地址本身有效的证书),因为在 Apache 可以对请求执行任何操作之前就建立了 SSL 连接。

答案3

使用 Apache 2.4,第一个 vhost 将是通过 IP 定位的主主机,不需要“ServerName”

<VirtualHost *:80>
    ServerAdmin YourEmail
    DocumentRoot /home/apache/www
    <Directory /home/apache/www/>
        Require all denied
    </Directory>
    ErrorLog /var/log/apache/error.log
    CustomLog /var/log/apache/access.log combined
    ServerSignature Off
</VirtualHost>
Include /path/to/vhosts/*.conf

相关内容