1

当创建从 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 配置中)?

阿帕奇配置是:

<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>
4

1 回答 1

1

我认为这可以被视为 Apache,而不是 PhantomJS,问题。出于所有意图和目的,“123.215.64.94”和“127.0.0.1”是同一个人。只有同一台机器上的人可以从“123.215.64.94”访问。

因此,在您的 apache 配置中,您可以更改Allow from 127.0.0.1 ::1Allow from 127.0.0.1 ::1 123.215.64.94

当然,如果在多个服务器上使用此服务器配置,这是一个坏主意;或者如果它是一个短暂的云实例,并且每次都获取一个新的IP地址。在这种情况下,在 Apache 配置中使用环境变量会更稳定。

于 2013-05-28T01:21:26.747 回答