我一直在努力解决这个问题。让我分解一下:
我们有一个apache2服务器,它托管了我们公司的大部分网站。每个网站都是一个单独的虚拟主机。我们的内部UI设计师使用其中一个虚拟主机向内部用户和第三方客户端展示他的最新草稿和项目。目前,使用此指令,此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网站上找到”)。也没有运气。
因此,对于我的最后一次尝试,我创建了第二个vhost,显然使用了不同的ServerName。另外,为了不在配置文件中出现任何冲突,我创建了一个符号链接到/ 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。
相关的任何定义我不确定您是否需要更多细节,但随时可以问我任何事情。
我很感激帮助!
---- ----编辑 我只想说明我不能100%说我的做法是正确的。也许设置2个VHost不是我的问题的解决方案。如果有人想到更好的方式,我愿意接受建议。最重要的是,我需要一个网站供内部用户使用,密码保护给其他人。
干杯!
答案 0 :(得分: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>
可以找到更多信息here