【问题标题】:Vhost access control虚拟主机访问控制
【发布时间】:2014-06-17 19:08:11
【问题描述】:

如何使只有某个地址可以访问我的一个虚拟主机?

我试过了:

<VirtualHost *:80>
    DocumentRoot "C:\Web Server\phpmyadmin"
    ServerName localhost

    <Directory />
    Require all granted
    Require ip 192.168.0.10
    </Directory>


    # Other directives here
</VirtualHost>

还有:

DocumentRoot "C:\Web 服务器\phpmyadmin" 服务器名称 localhost

<Directory />
<RequireAll>
Require all granted
Require ip 192.168.0.10
</RequireAll>
</Directory>


# Other directives here

但是 Apache 拒绝启动。

【问题讨论】:

    标签: apache .htaccess access-control vhosts


    【解决方案1】:

    一旦我通过 vhost 配置尝试了同样的操作,但由于依赖于其他 apache 配置文件而失败。我最终使用 .htaccess 文件来限制对我的 IP 的访问 - 它适用于我迄今为止所拥有的所有场景:

    示例 htaccess 配置:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/maintenance.php
    RewriteCond %{REMOTE_ADDR} !=111.111.111.111
    RewriteRule ^.*$ /maintenance.php [R=302,L]
    

    它会将IP不是111.111.111.111的任何用户重定向到maintenance.php文件,您可以在该文件中向被阻止访问的用户留言。

    我给你这个例子是因为我看到这个问题也被标记为“.htaccess”。

    【讨论】:

    • 在您的具体情况下,您不应使用 302 状态码,而应使用 503
    【解决方案2】:

    这应该可以解决问题:

    <VirtualHost *:80>
      DocumentRoot /var/www/test
      <Directory /var/www/test>
        Order deny,allow
        Deny from all
        Allow from <IP>
      </Directory>
    </VirtualHost>
    

    更新在 2.4 中使用:

    <Directory /var/www/test>
        Require ip <IP>
    </Directory>
    

    【讨论】:

    • 我忘了说,我使用的是 Apache 2.4。
    • 谢谢,但即使我允许我的 IP 它仍然给我禁止,现在不会让任何东西连接到它。
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2012-12-28
    • 2014-03-15
    • 1970-01-01
    相关资源
    最近更新 更多