menyiapkan host virtual mod_proxy dasar

11

Saya mencoba menyiapkan host virtual dasar untuk mem-proxy semua permintaan untuk test.local ke server WEBrick yang telah saya jalankan di 127.0.0.1:8080 sambil menjaga semua permintaan ke localhost pergi ke file statis saya di / var / www. Saya menjalankan Ubuntu 10.04.

Saya telah menginstal libapache2-mod-proxy-html dan saya memiliki modul yang diaktifkan dengan proksi a2enmod. Saya juga sudah mengaktifkan host virtual saya. Namun, setiap kali saya pergi ke test.local saya selalu mendapatkan kesalahan 500 server cryptic dan semua log saya memberitahu saya adalah:

[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.

Inilah tuan rumah virtual saya:

<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

dan inilah pengaturan saya untuk 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>

Adakah yang tahu apa yang saya lakukan salah? Terima kasih

SevenProxies
sumber

Jawaban:

35

Sepertinya Anda tidak memuat mod_proxy_httpmodul (yang diperlukan untuk proxy ke server HTTP). Saya tidak memiliki Ubuntu 10,04 di depan saya, tetapi IIRC itu seperti:

sudo a2enmod proxy_http
pendatang
sumber
Saya telah mengaktifkan proxy_http dan proxy_html dan memulai kembali apache, tetapi sekarang saya mendapatkan kesalahan 503. Inilah log dari kanan setelah saya memulai kembali dengan 3 refresh di firefox:
SevenProxies
[Kamis 03 Mar 12:25:29 2011] [kesalahan] (111) Sambungan ditolak: proxy: HTTP: upaya untuk menyambung ke 127.0.0.1:8080 (localhost) gagal [Kamis 3 Maret 12:25:29 2011] [kesalahan ] ap_proxy_connect_backend pekerja penonaktifan untuk (localhost) [Kamis 03 12:26:05 2011] proksi [kesalahan]: HTTP: koneksi dinonaktifkan untuk (localhost) [Kamis 03 Maret 12:26:10 2011] [kesalahan] proksi: HTTP: koneksi dinonaktifkan untuk (localhost)
SevenProxies
Sebenarnya, tiba-tiba itu mulai bekerja. Terima kasih.
SevenProxies
1
Dalam kasus saya, proxy_ajp tidak ada (kami menggunakan AJP untuk terhubung dengan kucing jantan).
Thomas Ferris Nicolaisen
kamu baru saja menyelamatkan hidupku @ThomasFerrisNicolaisen
Pras
2

Jawaban di atas tidak membantu saya karena saya menerima kesalahan yang sama seperti dalam komentar penulis dalam jawaban yang dipilih. Namun, saya menemukan posting dan perubahan berikut yang memecahkan masalah saya:

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1

Sumber: http://allscm.com/archives/apache2-proxy-disabled-connection-on-localhost.html

Myles Steinhauser
sumber
CentOS / RedHat / Fedora memiliki SELinux. Ubuntu tidak.
Martijn Burger
Oh, bagus sekali. Saya melewatkan tag [ubuntu] pada posting asli, hanya sekarang melihatnya bertahun-tahun kemudian. Saya menggunakan CentOS 6 saat saya mengalami masalah ini, jadi jawaban saya yang tidak akurat di sini.
Myles Steinhauser