2009-07-21 22 views
16

Tengo un servidor Apache no escuchar el puerto 8001 y Apache puerto 80. Quiero escuchar un cierto dominio virtual para ser servido realmente por el servidor Apache no a través del puerto 80.Apache Puerto proxy

Ejemplo:

<VirtualHost *:80> 
    Servername example.com 

    # Forward this on to the server on port 8001 
</VirtualHost> 

Pensé que podría hacer esto con mod_proxy y ProxyPass con algo como esto.

ProxyPass * http://www.example.com:8001/ 

Pero eso no funciona.

+1

Puede tener mejor suerte con esto en ServerFault. –

Respuesta

24

ProxyPass * http://www.example.com:8001/

star solo es válido en un bloque. Barra oblicua es lo que quieres.

ProxyPass/http://www.example.com:8001/ 
ProxyPassReverse/http://www.example.com:8001/ 

El proxy inverso asegura que las redirecciones enviados por el servidor de puerto 8001 se ajustan al nombre nombre canónico de su proxy.

El manual Apache tiene algunos ejemplos. http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

+1

Si obtiene un error interno del servidor: 'sudo a2enmod proxy' ' sudo a2enmod proxy_http' 'sudo service apache2 restart' – jaggedsoft

+0

no deberíamos usar mysite.com en stackoverflow, vea http://meta.stackexchange.com/ preguntas/208963/why-are-certain-example-urls-like-http-site-com-and-http-mysite-com-blocke –

4

Tengo un sitio alojado por apache en el puerto 80. También tengo un servidor web python que escucha en el puerto 8880, al que se debe acceder a través del http://[mydomainname]/something. Usando la respuesta de txyoji, lo tengo trabajo, simplemente añadiendo un pase proxy para mi definición de host virtual de este modo:

ProxyPass /something http://mydomainname:8880/something 
ProxyPassReverse /something http://mydomainname:8880/something 

ACTUALIZACIÓN

Dependiendo de su configuración, una mejor manera de hacer esto es configurar un pase proxy para un puerto en "localhost". Creo que es un poco más claro lo que estás haciendo, más más portátil. ¡Junto con esto, no tienes que abrir siquiera el firewall en ese puerto! Puede enviar el proxy de forma local a cualquier puerto, por lo que no hay ninguna razón para exponerlo al mundo exterior si no es necesario. Embotelle todo a través del puerto 80 y tenga Apache siempre "agotado en frente". Entonces, solo puede preocuparse por la seguridad de eso.

ProxyPass /something http://localhost:8880/something 
ProxyPassReverse /something http://localhost:8880/something 
Cuestiones relacionadas