更新代理背后的状态


9

我在一个简单的HTTP代理后面的Intranet中运行Drupal。我希望模块和核心更新检查能够正常工作。

我似乎记得在Drupal 6上有一个核心技巧可以做到这一点,但是我找不到该页面了。

有谁知道我该怎么做?

Answers:


6

我们的一家公司安装了一个阻止直接访问Internet的转发代理,我们最终用“代理补丁”对内核进行了补丁(之所以这样命名,是因为该问题自2004年以来一直公开-http: //drupal.org/节点/ 7881)。

http://drupal.org/node/7881#comment-4134240-具有适用于drupal 7 的补丁程序http://drupal.org/node/7881#comment-2446280-具有针对drupal 6的补丁程序

安装补丁后,您将能够更改drupal_http_request()以通过代理发送所有查询。

这样,所有需要访问互联网的模块都将按预期运行,例如更新状态,聚合器,openID等

更新:该补丁已经合并到Drupal 7中继(https://drupal.org/comment/6425278#comment-6425278)中,希望与Drupal 7.16一起发布。


完美-那是我获得D6代理补丁的页面,但是我似乎错过了它-谢谢
Frederik

2

作为参考,这是您现在可以在Drupal中使用的语法,以将其配置为在代理后面运行(来自default.settings.php / 7):

/**
 * External access proxy settings:
 *
 * If your site must access the Internet via a web proxy then you can enter
 * the proxy settings here. Currently only basic authentication is supported
 * by using the username and password variables. The proxy_user_agent variable
 * can be set to NULL for proxies that require no User-Agent header or to a
 * non-empty string for proxies that limit requests to a specific agent. The
 * proxy_exceptions variable is an array of host names to be accessed directly,
 * not via proxy.
 */
# $conf['proxy_server'] = '';
# $conf['proxy_port'] = 8080;
# $conf['proxy_username'] = '';
# $conf['proxy_password'] = '';
# $conf['proxy_user_agent'] = '';
# $conf['proxy_exceptions'] = array('127.0.0.1', 'localhost');


1

为了解决暂存pbs,我在本地使用实际的生产域名,但是在代理后面,因此drupal安装和Web服务器配置严格相同(在某些配置上,IP侦听可能有所不同,具体取决于侦听ip中的IP)。生产)。

因此,我有一个响应http://mydomain.local的代理,代理了http://www.mydomain.tld,但使用的是本地IP。

Whith nginx,在本地虚拟主机conf中:

server_name  mydomain.local;
set $proxied_server_name www.mydomain.tld;
set $proxied_cookie_domain mydomain.tld;

# then generic proxy conf
proxy_set_header Host              $proxied_server_name;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

# My param added for drupal absolute url construction
proxy_set_header X-Proxy-Host      $host;               

# For headers rewriting (Location or Refresh)
proxy_redirect   http://$proxied_server_name/ http://$host/;

proxy_cookie_domain $proxied_server_name $host;  
# and for drupal auth, with cookies without sub-domain
proxy_cookie_domain $proxied_cookie_domain $host;

对于代理虚拟主机,就像在生产中一样

server_name  www.mydomain.tld;

在我的settings.php中

if (isset($_SERVER['HTTP_X_PROXY_HOST'])) {
  $base_url = 'http://' .$_SERVER['HTTP_X_PROXY_HOST'];
}

有了这个conf,我就可以在许多drupal安装(在我的情况下是dev和production,但可以是你想要的任何东西)之间同步所有drupal文件,数据库和服务器配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.