1

我已经为这个问题苦苦挣扎了一段时间了。让我分解一下:

我们有一个托管我们公司大部分网站的 apache2 服务器。每个网站都是一个单独的虚拟主机。我们的内部 UI 设计师使用其中一个虚拟主机向内部用户和第 3 方客户展示他的最新草稿和项目。目前,此 VHost 使用以下指令受到 Vhost 配置文件的密码保护:

<Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
   Order allow,deny
   Allow from all
   AuthUserFile /home/secure/passwords
   AuthName "Username and password required"
   AuthType Basic
   Require valid-user
</Directory>

我需要的是让我们的内部用户可以使用这个网站(所以没有密码提示),这意味着一个特定的 IP 范围。我尝试使用Allow from 192.168.xxx.xxx上述指令集中的选项。然而,这并没有让内部 IP 通过(仍然要求输入密码)。所以我尝试使用我们公司的外部 IP 地址(您可以在任何“我的 IP 网站”上找到)。也没有运气。

因此,对于我的最后一次尝试,我创建了第二个虚拟主机,它显然使用了不同的服务器名称。另外,为了不在配置文件中出现任何冲突,我创建了一个指向 /var/www 的符号链接并将其命名为 www2。因此,第二个 vhost 文件中的 Directory 指令如下所示:

<Directory /var/www2/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride none
   Order allow,deny
   Allow from all
</Directory>

但是,配置文件显然是冲突的,因为在当前配置下,我在两台主机上都获得了密码保护。如果我在第一个 Vhost 中禁用它,我会在两者上都丢失它。

任何目录中都没有 .htaccess 文件,因此没有任何内容可以覆盖配置。apache2.conf 文件没有定义与 Auth 相关的任何内容。

我不确定您是否需要更多详细信息,但请随时问我任何问题。

感谢您的帮助!

----edit---- 我只是想说明我不能说100% 我的方法是正确的。也许设置 2 个 VHosts 并不能解决我的问题。如果有人想到更好的方法,我愿意接受建议。底线是,我需要一个网站可供内部用户使用,并为其他任何人提供密码保护。

干杯!

4

1 回答 1

0

您是否尝试过使用Apache 的满足指令来解决这个问题?例如:

  <Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
   Order allow,deny
   Allow from all
   AuthUserFile /home/secure/passwords
   AuthName "Username and password required"
   AuthType Basic
   Require valid-user

   Allow from 192.168.1
   Satisfy Any 
  </Directory>

更多信息可以在这里找到

于 2012-11-01T10:58:11.853 回答