当创建从PhantomJS到localhost上托管的域的连接时,客户端IP被检测为服务器外部IP。
Apache配置为htpasswd
,并设置为允许本地连接绕过它。但是在错误日志中我得到了:
[Mon May 27 10:23:31 2013] [error] [client 123.215.64.94] user not found: /path/to/file
123.215.64.94
是外部IP地址之一的服务器。
PhatomJS脚本很简单:
var page = require('webpage').create();
page.open('http://mysite.com/path/to/file', function () {
page.render('output.png');
phantom.exit();
});
那么如何配置Apache绕过htpasswd(不必将服务器外部IP放在Apache配置中)?
apache配置为:
<VirtualHost *:80>
ServerName mysite.com
DocumentRoot /home/www-mysite/public
<Directory /home/www-mysite/public>
Options -Indexes FollowSymLinks
AllowOverride all
AuthUserFile /home/www-data/.htpasswd
AuthName "Password Protected"
AuthType Basic
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from 127.0.0.1 ::1
</Directory>
</VirtualHost>
答案 0 :(得分:1)
我认为这可以被视为Apache,而不是PhantomJS,这个问题。所有意图和目的“123.215.64.94”和“127.0.0.1”是同一个人。只有同一台机器上的某人可以从“123.215.64.94”访问。
因此,在您的apache配置中,您可以将Allow from 127.0.0.1 ::1
更改为Allow from 127.0.0.1 ::1 123.215.64.94
当然,如果在多个服务器上使用此服务器配置,这是一个坏主意;或者如果它是一个短暂的云实例,并且每次都获得一个新的IP地址。在这种情况下,在Apache配置中使用环境变量将更加稳定。