it-swarm-id.com

Perbarui status di belakang proxy

Saya menjalankan Drupal dalam intranet yang berada di belakang proxy HTTP sederhana. Saya ingin modul dan pembaruan inti memeriksa untuk benar-benar berfungsi.

Sepertinya saya ingat ada hack inti untuk melakukan ini pada Drupal 6, tapi saya tidak dapat menemukan halaman lagi.

Adakah yang tahu bagaimana saya bisa membuatnya bekerja?

9
Frederik

Salah satu instalasi perusahaan kami memiliki proxy ke depan yang mencegah akses langsung ke internet, kami akhirnya menambal inti dengan 'patch proxy' (demikian dinamai demikian karena masalah ini telah dibuka sejak 2004 - http: // drupal.org/node/7881 ).

http://drupal.org/node/7881#comment-413424 - memiliki tambalan untuk drupal 7 http://drupal.org/ node/7881 # comment-244628 - memiliki tambalan untuk drupal 6

Setelah tambalan diinstal, maka Anda akan dapat mengubah drupal_http_request () untuk mengirim semua pertanyaan melalui proxy.

Dengan cara ini semua modul yang membutuhkan akses ke internet akan berfungsi seperti yang diharapkan, mis. perbarui patung, agregator, openID dll

[~ # ~] pembaruan [~ # ~] : Patch sudah digabung dalam Drupal 7 trunk (- https://drupal.org/comment/6425278#comment-6425278 ), dan mudah-mudahan akan keluar dengan Drupal 7.16

6
wiifm

Sebagai referensi, ini adalah sintaks yang sekarang dapat Anda gunakan dalam Drupal untuk mengkonfigurasinya agar berjalan di belakang proxy (dari 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');
2
Andy Jackson

Untuk menyelesaikan pementasan pbs, saya bekerja secara lokal dengan nama domain produksi sebenarnya, tetapi di belakang proxy, sehingga drupal instalasi dan konfigurasi server web sangat identik (pada beberapa konfigurasi, mendengarkan IP dapat berbeda, tergantung pada ip mendengarkan dalam produksi).

Jadi, saya punya proxy yang merespons http: //mydomain.local , proxy ke http: // www .mydomain.tld , tetapi pada IP lokal.

Dengan nginx, di conf vhost lokal:

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;

Untuk vhost proksi, sama seperti dalam produksi

server_name  www.mydomain.tld;

Dan di setting.php saya

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

Dengan conf ini, saya dapat menyinkronkan semua drupal file DAN database DAN konfigurasi server antara banyak drupal instalasi (dev dan produksi dalam kasus saya tetapi bisa apa saja kamu ingin).

1
dcaillibaud

Ada modul untuk it

Saat ini hanya Drupal 6, tetapi harus memberikan titik awal yang baik.

1
googletorp