Apache VirtualHost Proxy พร้อมกับไดเรกทอรีย่อย


13

ปัจจุบันเรามีเซิร์ฟเวอร์ IIS เป็นเว็บเซิร์ฟเวอร์หลักของเรา เรากำลังใช้เซิร์ฟเวอร์ Apache แทน แต่ก็ยังจำเป็นต้องเข้าถึงเซิร์ฟเวอร์ IIS โดยทั่วไปสิ่งนี้เป็นเรื่องง่ายเนื่องจาก Apache2 สามารถพร็อกซีโดเมนย่อยกับเซิร์ฟเวอร์นี้

อย่างไรก็ตามปัญหาของเราคือ: เรากำลังใช้ dotnetCharting บนเซิร์ฟเวอร์ IIS และการอนุญาตให้ใช้งานนั้นเชื่อมโยงกับชื่อโดเมน เพื่อให้ dotnetCharting ทำงานได้จะต้องซื้อสิทธิ์ใช้งานอื่น

คำถามของฉันคือ Apache2 proxy สามารถเป็นไดเรกทอรีย่อยได้หรือไม่? ตัวอย่างเช่น 'www.example.com/subdir' สามารถชี้ไปที่เซิร์ฟเวอร์ IIS ได้หรือไม่ ดูเหมือนว่ามันไม่ควรจะเป็นไปไม่ได้ แต่ฉันไม่สามารถหาทางแก้ไขได้

คำตอบ:


19

แน่ใจ แต่ระวัง เว็บแอปพลิเคชั่นจำนวนมากไม่ได้รับการออกแบบมาอย่างดีสำหรับการเปลี่ยนเส้นทาง URL แอปพลิเคชันที่ใช้ในไดเรกทอรีย่อยปัจจุบันหรือไม่

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

หรือหากคุณกำลังเปลี่ยนแปลงพา ธ URL โปรดทราบว่าแอปพลิเคชันจำนวนมากจะมีปัญหากับสิ่งนี้เนื่องจากเส้นทางที่แน่นอนสำหรับทรัพยากร (CSS, javascript, รูปภาพ):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/

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

1
ผมต้องออกจากปิดท้าย/จากsubdir(เช่นนี้/subdir) มิฉะนั้นถ้าdomain.com/subdirผลลัพธ์ในข้อผิดพลาดของแอปพลิเคชัน (500) มันจะใช้พร็อกซี่อย่างถูกต้องหากมีการใช้เครื่องหมายทับ ( domain.com/subdir/) แต่นั่นไม่ใช่เอฟเฟกต์ที่ฉันต้องการ
OneHoopyFrood

2

แน่ใจ

  1. เปิดใช้งาน mod_proxy mod_proxy_http
  2. ตั้งคำสั่งต่อไปนี้ใน Apache VHost ของคุณ

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

โปรดทราบว่า "/" สุดท้ายเป็นข้อบังคับ

สำหรับข้อมูลเพิ่มเติม: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html


0

เครื่องหมายทับสุดท้ายในตอนท้ายนั้นไม่บังคับ ฉันได้เซ็ตอัพแบบนี้

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

และระดับสูงสุดทำงาน แต่ทุกอย่างในตำบลที่อยู่ใต้หลักไม่ได้

ฉันเปลี่ยนเป็นสิ่งนี้และทุกอย่างทำงานได้

ขอบคุณสำหรับข้อมูลที่ผิด !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir

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