在 Apache 2.4 上删除除原始域之外的其他域的所有连接

在 Apache 2.4 上删除除原始域之外的其他域的所有连接

我有一台装有 apache 2.4 web 服务器的 ubuntu 服务器,原始域正在使用 SSL 运行。有人将他们的域指向我的服务器,并在我的虚拟主机中指定了服务器名称和服务器别名,因此它应该只接受来自原始域的连接,下面是虚拟主机

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

    <Directory /var/www/interoptive.com>
    AllowOverride All
    allow from all
    Options -Indexes
   </Directory>

    ErrorLog /var/www/interoptive.com/apache.error.log
    CustomLog /var/www/interoptive.com/apache.access.log common
    php_flag log_errors on
    php_flag display_errors off
    php_value error_reporting 2147483647
    php_value error_log /var/www/interoptive.com/php.error.log

  Include /etc/letsencrypt/options-ssl-apache.conf
  ServerAlias interoptive.com

  SSLCertificateFile /etc/letsencrypt/live/interoptive.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/interoptive.com/privkey.pem

  RewriteEngine on
  RewriteCond %{SERVER_NAME} =interoptive.com
</VirtualHost>
</IfModule>

原始域名是 interoptive.com,另一个域名是 ecomprime.com。如何配置 apache 以仅接受来自原始域的连接并丢弃来自其他域的所有连接?

尝试了互联网上的资源,但似乎都不起作用。非常感谢您的帮助、建议和推荐。提前致谢。

答案1

这是 Apache 的正常现象虚拟主机匹配对于基于名称的虚拟主机:

如果有多个VirtualHost指令列出确定为最佳匹配的 IP 地址和端口组合,则剩余步骤中的“列表”是指匹配的虚拟主机列表,按照它们在配置文件中的顺序排列。- -

配置文件中具有指定 IP 地址的第一个 vhost 具有最高优先级,并会捕获对未知服务器名称的任何请求 - -

放置一个万能塞VirtualHost *:443 实际VirtualHost *:443操作就是你想要的。由于它是 TLS 虚拟主机,因此你还需要一个证书,但你可以使用已有的证书,因为主机名无论如何都不会匹配。

<VirtualHost *:443>
    ServerName catchall
    Redirect 404 /

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/interoptive.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/interoptive.com/privkey.pem
</VirtualHost>

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

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/interoptive.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/interoptive.com/privkey.pem
</VirtualHost>

相关内容