Perbarui status di belakang proxy

9

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

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

Adakah yang tahu bagaimana saya bisa membuatnya bekerja?

Frederik
sumber

Jawaban:

6

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/ simpul / 7881 ).

http://drupal.org/node/7881#comment-4134240 - memiliki tambalan untuk drupal 7 http://drupal.org/node/7881#comment-2446280 - 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, misalnya memperbarui patung, agregator, openID dll

UPDATE : Patch sudah digabung dalam trunk Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ), dan semoga akan keluar dengan Drupal 7.16

wiifm
sumber
Sempurna - itu adalah halaman yang sama tempat saya mendapatkan tambalan proxy D6, tapi sepertinya saya melewatkannya - terima kasih
Frederik
2

Sebagai referensi, ini adalah sintaks yang sekarang dapat Anda gunakan di 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');
Andy Jackson
sumber
1

Ada modul untuk itu

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

googletorp
sumber
Peduli Anda membuat versi Drupal 7? (Saya tidak percaya ada orang yang meluncurkan situs baru dengan Drupal 6.)
iconoclast
1

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

Jadi, saya punya proxy yang merespons untuk 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, 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 file drupal DAN database DAN konfigurasi server antara banyak instalasi drupal (dev dan produksi dalam kasus saya tetapi bisa apa saja yang Anda inginkan).

dcaillibaud
sumber