Cập nhật trạng thái đằng sau một proxy


9

Tôi đang chạy Drupal trong mạng nội bộ phía sau proxy HTTP đơn giản. Tôi muốn kiểm tra cập nhật mô-đun và cốt lõi để thực sự hoạt động.

Tôi dường như nhớ rằng đã có một hack cốt lõi để làm điều này trên Drupal 6, nhưng tôi không thể tìm thấy trang này nữa.

Có ai biết làm thế nào tôi có thể làm việc này?

Câu trả lời:


6

Một trong những cài đặt công ty của chúng tôi có proxy chuyển tiếp ngăn chặn truy cập trực tiếp vào internet, chúng tôi đã kết thúc việc vá lõi bằng 'bản vá proxy' (do đó được đặt tên theo cách này vì vấn đề này đã được mở từ năm 2004 - http://drupal.org/ nút / 7881 ).

http://drupal.org/node/7881#comment-4134240 - có bản vá cho drupal 7 http://drupal.org/node/7881#comment-2446280 - có bản vá cho drupal 6

Sau khi bản vá được cài đặt, sau đó bạn sẽ có thể thay đổi drupal_http_Vquest () để gửi tất cả các truy vấn thông qua proxy.

Bằng cách này, tất cả các mô-đun yêu cầu truy cập vào internet sẽ hoạt động như mong đợi, ví dụ: cập nhật tượng, tập hợp, openID, v.v.

CẬP NHẬT : Bản vá đã được hợp nhất trong thân cây Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ), và hy vọng sẽ ra mắt với Drupal 7.16


Hoàn hảo - đó là cùng một trang tôi đã nhận được bản vá proxy D6, nhưng dường như tôi đã bỏ lỡ nó - cảm ơn
Frederik

2

Để tham khảo, đây là cú pháp mà bạn hiện có thể sử dụng trong Drupal để định cấu hình nó để chạy phía sau proxy (từ default.sinstall.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

Có một mô-đun chođó

Hiện tại chỉ có Drupal 6, nhưng sẽ cung cấp một điểm khởi đầu tốt.


Chăm sóc bạn tạo phiên bản Drupal 7? (Tôi không thể tin rằng bất cứ ai vẫn tung ra các trang web mới với Drupal 6.)
iconoclast

1

Để giải quyết pbs phân tầng, tôi đang làm việc cục bộ với tên miền sản xuất thực, nhưng đằng sau một proxy, để cài đặt drupal và cấu hình máy chủ web hoàn toàn giống nhau (trên một số conf, việc nghe IP có thể khác nhau, tùy thuộc vào ip lắng nghe sản xuất).

Vì vậy, tôi đã có một proxy trả lời cho http: //mydomain.local , ủy quyền cho http: //www.mydomain.tld , nhưng trên một IP cục bộ.

Với nginx, trong vhost conf địa phương:

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;

Đối với vhost ủy nhiệm, giống như trong sản xuất

server_name  www.mydomain.tld;

Và trong cài đặt của tôi.

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

Với conf này, tôi có thể đồng bộ tất cả các tệp drupal VÀ cấu hình cơ sở dữ liệu VÀ máy chủ giữa rất nhiều cài đặt drupal (dev và sản xuất trong trường hợp của tôi nhưng có thể là bất cứ điều gì bạn muốn).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.