允许基于域名访问(Apache)?

允许基于域名访问(Apache)?

语境

我正在运行 Apache/2.4.38 (Debian) 服务器。以下是我的

/var/www/html/.htaccess

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

和我的 /etc/apache2/apache2.conf

<Directory /var/www/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
</Directory>

使用此功能时,用户必须输入登录名和密码才能访问网站。一切正常!

当我使用时 AllowOverride None,没有人需要输入任何内容。

<Directory /var/www/>
                Options Indexes FollowSymLinks
                AllowOverride None
                Require all granted
</Directory>

问题

如何允许从特定 IP(或域名)进行访问,以便用户无需输入登录名/密码?理想情况下,我希望允许从特定域进行访问(https://mxtoolbox.com/SuperTool.aspx?action=a%3abiosoft-ipcms.fr&run=toolpage) 仅有的。

答案1

与其将配置拆分到服务器配置和 .htaccess 文件之间,不如将所有内容都保存在服务器配置中,这样维护起来会更轻松,执行起来也会更快。然后,您可以将以下内容放入服务器配置中:

<Directory /var/www>
  Require all granted
</Directory>
<Directory /var/www/html>
  AuthType Basic
  AuthName "Restricted Content"
  AuthUserFile /etc/apache2/.htpasswd
  <RequireAny>
    Require valid-user 
    Require ip ...
  </RequireAny>
</Directory>

在其中插入要允许的源主机的 IP 地址。如果您只想允许来自特定引荐来源 URL 的请求,还可以添加类似

Require expr "%{HTTP_REFERER} == ..."

但要意识到请求者可以将 Referer 标头设置为他们想要的任何值,所以这是不安全的。

请参阅文档要求RequireAny, 和表达式

相关内容