답변:
회사 설치 중 하나에 인터넷에 대한 직접 액세스를 방해하는 포워드 프록시가 있었으므로 '프록시 패치'로 코어를 패치했습니다. (이 문제는 2004 년 이후 공개되었으므로 이런 방식으로 명명되었습니다-http: //drupal.org/ node / 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과 함께 나올 것입니다.
참고로, 이것은 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');
그 ™를 위한 모듈이 있습니다
현재 Drupal 6 뿐이지 만 좋은 출발점을 제공해야합니다.
스테이징 pbs를 해결하기 위해 실제 프로덕션 도메인 이름으로 로컬로 작업하고 있지만 프록시 뒤에서 drupal 설치와 웹 서버 구성이 완전히 동일합니다 (일부 conf의 경우 수신 IP에 따라 IP 수신이 다를 수 있음) 생산).
그래서 http : //mydomain.local 응답 하고 http : //www.mydomain.tld 프록시 하지만 로컬 IP를 사용하는 프록시가 있습니다.
로컬 호스트 conf의 Whith nginx :
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 설치 사이에서 모든 drupal 파일과 데이터베이스 및 서버 구성을 동기화 할 수 있습니다 (필자의 경우 dev와 프로덕션이지만 원하는대로 할 수 있습니다).