อัปเดตสถานะหลังพร็อกซี


9

ฉันกำลังเรียกใช้ Drupal ในอินทราเน็ตซึ่งอยู่หลังพร็อกซี HTTP แบบง่าย ฉันต้องการให้โมดูลและการตรวจสอบอัปเดตหลักทำงานได้จริง

ฉันดูเหมือนจะจำได้ว่ามีแฮ็คหลักในการทำเช่นนี้ใน Drupal 6 แต่ฉันไม่สามารถหาหน้าได้อีก

ไม่มีใครรู้ว่าฉันสามารถทำงานนี้ได้อย่างไร

คำตอบ:


6

หนึ่งในการติดตั้งขององค์กรของเรามีพร็อกซีส่งต่อที่ป้องกันไม่ให้เข้าถึงอินเทอร์เน็ตโดยตรงเราได้ลงเอยด้วยการแก่นหลักด้วย 'พร็อกซีแพตช์' (ดังนั้นตั้งชื่อด้วยวิธีนี้เนื่องจากปัญหานี้เปิดตั้งแต่ปี 2004 - http://drupal.org/ โหนด / 7881 )

http://drupal.org/node/7881#comment-4134240 - มี patch สำหรับ drupal 7 http://drupal.org/node/7881#comment 2446280 - มี patch สำหรับ drupal 6

เมื่อติดตั้งแพตช์แล้วคุณจะสามารถแก้ไข drupal_http_request () เพื่อส่งแบบสอบถามทั้งหมดผ่านพร็อกซี

วิธีนี้โมดูลทั้งหมดที่ต้องการการเข้าถึงอินเทอร์เน็ตจะทำงานได้ตามที่คาดไว้เช่นอัปเดตรูปปั้นผู้รวบรวมรวม openID และอื่น ๆ

อัปเดต : แพทช์ได้รวมอยู่ในลำตัว Drupal 7 แล้ว ( https://drupal.org/comment/6425278#comment-6425278 ) และหวังว่าจะออกมาพร้อมกับ Drupal 7.16


สมบูรณ์แบบ - นั่นคือหน้าเดียวกับที่ฉันได้รับ D6 proxy proxy แต่ดูเหมือนว่าฉันจะพลาด - ขอบคุณ
Frederik

2

สำหรับการอ้างอิงนี่เป็นไวยากรณ์ที่คุณสามารถใช้ใน 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');


1

สำหรับการแก้ไข staging pbs ฉันทำงานในพื้นที่กับชื่อโดเมนจริงที่ผลิต แต่อยู่หลังพร็อกซีดังนั้นการติดตั้ง drupal และการกำหนดค่าเว็บเซิร์ฟเวอร์จะเหมือนกันอย่างเคร่งครัด (ในบางครั้งการฟัง IP อาจแตกต่างกันไป การผลิต)

ดังนั้นฉันมีพร็อกซีที่ตอบสนองต่อhttp: //mydomain.localพร็อกซีไปที่http: //www.mydomain.tldแต่บน IP ท้องถิ่น

วิธีใช้ nginx ใน vhost conf:

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'];
}

ด้วยความเชื่อมั่นนี้ฉันสามารถซิงค์ไฟล์ drupal ทั้งหมดและฐานข้อมูลและการกำหนดค่าเซิร์ฟเวอร์ระหว่างการติดตั้ง drupal จำนวนมาก (การพัฒนาและการผลิตในกรณีของฉัน แต่อาจเป็นสิ่งที่คุณต้องการ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.