การตั้งค่าโฮสต์เสมือน mod_proxy พื้นฐาน


11

ฉันกำลังพยายามตั้งค่าโฮสต์เสมือนพื้นฐานให้พร็อกซีคำขอทั้งหมดเพื่อ test.local ไปยังเซิร์ฟเวอร์ WEBrick ฉันทำงานบน 127.0.0.1:8080 ในขณะที่รักษาคำขอทั้งหมดไปยัง localhost ไปยังไฟล์คงที่ของฉันใน / var / www ฉันใช้ Ubuntu 10.04

ฉันติดตั้ง libapache2-mod-proxy-html แล้วและเปิดใช้งานโมดูลด้วย a2enmod proxy ฉันยังเปิดใช้งานโฮสต์เสมือนของฉัน อย่างไรก็ตามเมื่อใดก็ตามที่ฉันไป test.local ฉันมักจะได้รับข้อผิดพลาดเซิร์ฟเวอร์ cryptic 500 และบันทึกทั้งหมดของฉันบอกฉันคือ:

[Thu Mar 03 01:43:10 2011] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

นี่คือโฮสต์เสมือนของฉัน:

<VirtualHost test.local:80>
    LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
    ServerAdmin webmaster@localhost
    ServerName test.local
    ProxyPreserveHost On

    # prevents this folder from being proxied
    ProxyPass /static !

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

และนี่คือการตั้งค่าของฉันสำหรับ mod_proxy:

<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.

        ProxyRequests Off

        <Proxy *>
        # default settings
                #AddDefaultCharset off
                #Order deny,allow
                #Deny from all
                ##Allow from .example.com

        AddDefaultCharset off
        Order allow,deny
        Allow from all
        </Proxy>

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block

        ProxyVia On
</IfModule>

มีใครรู้บ้างว่าฉันทำผิดอะไร? ขอบคุณ

คำตอบ:


35

ดูเหมือนว่าคุณไม่ได้โหลดmod_proxy_httpโมดูล (ซึ่งจำเป็นสำหรับพร็อกซีไปยังเซิร์ฟเวอร์ HTTP) ฉันไม่มี Ubuntu 10.04 ต่อหน้าฉัน แต่ IIRC เป็นสิ่งที่ต้องการ:

sudo a2enmod proxy_http

ฉันมีทั้ง proxy_http และ proxy_html เปิดใช้งานและเริ่ม apache ใหม่ แต่ตอนนี้ฉันได้รับข้อผิดพลาด 503 นี่คือล็อกจากทันทีหลังจากที่ฉันรีสตาร์ทพร้อมรีเฟรช 3 ครั้งใน firefox:
SevenProxies

[Thu Mar 03 12:25:29 2011] [ข้อผิดพลาด] (111) การเชื่อมต่อถูกปฏิเสธ: พร็อกซี: HTTP: พยายามเชื่อมต่อกับ 127.0.0.1:8080 (localhost) ล้มเหลว [Thu Mar 03 12:25:29 2011] [ข้อผิดพลาด ] ap_proxy_connect_backend ปิดการใช้งานผู้ปฏิบัติงานสำหรับ (localhost) [Thu Mar 03 12:26:05 2011] [ข้อผิดพลาด] พร็อกซี: HTTP: การเชื่อมต่อที่ปิดใช้งานสำหรับ (localhost) [Thu มี.ค. 03 12:26:10 2011] [ข้อผิดพลาด] proxy: HTTP: ปิดใช้งานการเชื่อมต่อสำหรับ (localhost)
SevenProxies

จริงๆแล้วทุกอย่างก็เริ่มทำงาน ขอขอบคุณ.
SevenProxies

1
ในกรณีของฉัน proxy_ajp ขาดหายไป (เราใช้ AJP เพื่อเชื่อมต่อกับ tomcat)
Thomas Ferris Nicolaisen

คุณเพิ่งช่วยชีวิตฉันไว้ @ThomasFerrisNicolaisen
Pras

2

คำตอบข้างต้นไม่ได้ช่วยฉันเพราะฉันได้รับข้อผิดพลาดเดียวกับในความคิดเห็นของผู้เขียนในคำตอบที่เลือก อย่างไรก็ตามฉันพบโพสต์และการเปลี่ยนแปลงต่อไปนี้ซึ่งแก้ไขปัญหาของฉัน:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

ที่มา: http://allscm.com/archives/apache2-proxy-disabled-connection-on-localhost.html


CentOS / RedHat / Fedora มี SELinux อูบุนตูไม่ได้
Martijn Burger

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