Proxy'nin arkasındaki durumu güncelleme


9

Drupal'ı basit bir HTTP proxy'nin arkasında olan bir intranette çalıştırıyorum. Modül ve çekirdek güncelleme kontrollerinin gerçekten çalışmasını istiyorum.

Drupal 6'da bunu yapmak için çekirdek bir saldırı olduğunu hatırlıyorum, ancak sayfayı artık bulamıyorum.

Bunu nasıl çalıştırabileceğimi bilen var mı?

Yanıtlar:


6

Kurumsal kurulumlarımızdan biri, internete doğrudan erişimi engelleyen ileri bir proxy'ye sahipti, çekirdeği 'proxy yaması' ile yamaladık (bu şekilde adlandırıldı çünkü bu sorun 2004'ten beri açıktı - http://drupal.org/ düğüm / 7881 ).

http://drupal.org/node/7881#comment-4134240 - drupal 7 için bir yama var http://drupal.org/node/7881#comment-2446280 - drupal 6 için bir yama var

Düzeltme eki yüklendikten sonra, proxy aracılığıyla tüm sorguları göndermek için drupal_http_request () yöntemini değiştirebilirsiniz.

Bu şekilde internete erişim gerektiren tüm modüller beklendiği gibi çalışacaktır, örneğin güncelleme heykeli, toplayıcı, openID vb.

GÜNCELLEME : Yama zaten Drupal 7 bagajında ​​birleştirildi ( https://drupal.org/comment/6425278#comment-6425278 ) ve umarım Drupal 7.16 ile çıkacak


Mükemmel - Bu D6 proxy yamasını aldım aynı sayfaydı, ama kaçırmışım gibi görünüyor - teşekkürler
Frederik

2

Referans olarak, bu artık bir proxy'nin arkasında çalışacak şekilde yapılandırmak için Drupal'da kullanabileceğiniz sözdizimidir ( default.settings.php / 7'den ):

/**
 * 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

Buiçin bir modül var

Şu anda sadece Drupal 6, ancak iyi bir başlangıç ​​noktası sağlamalıdır.


Drupal 7 sürümünü oluşturmaya özen gösteriyor musunuz? ( Kimsenin hala Drupal 6 ile yeni siteler açtığına inanamıyorum .)
iconoclast

1

Aşama pbs çözümlemek için, gerçek üretim etki alanı adı ile yerel olarak çalışıyorum, ancak bir proxy arkasında, böylece drupal kurulum ve web sunucusu yapılandırması kesinlikle aynıdır (bazı conf'de IP dinleme, dinleme ipine bağlı olarak farklı olabilir üretim).

Yani, için yanıt proxy vardı //mydomain.local: http için proxy, http: //www.mydomain.tld , ancak yerel IP.

Nginx ile, yerel vhost conf'de:

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;

Proksiye hayalet için, tıpkı üretimde olduğu gibi

server_name  www.mydomain.tld;

Ve ayarlarımda. Php

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

Bu conf ile, tüm drupal dosyaları VE veritabanı VE sunucu yapılandırmasını bir sürü drupal kurulum arasında senkronize edebilirim (dev ve üretim benim durumumda ama ne istersen olabilir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.