Apache / PhantomJS将localhost视为外部IP

时间:2013-05-26 22:31:08

标签: apache networking phantomjs

当创建从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>

1 个答案:

答案 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配置中使用环境变量将更加稳定。