He luchado con esto por algún tiempo y definitivamente estoy haciendo algo mal.
Tengo un servidor apache y un servidor JBoss en la misma máquina. Me gustaría redirigir el tráfico de mydomain.com a JBoss localhost: 8080 / example. El DNS está actualmente configurado para midominio.com e irá directamente al puerto 80 cuando se ingrese en el navegador.
Mi pregunta es, ¿cómo redirijo a un puerto diferente cuando un determinado nombre de dominio llega a Apache (en este caso, "mydomain.com")?
<VirtualHost ip.addr.is.here>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
ACTUALIZADO con Sugerencias - Todavía no se reenvía al puerto 8080
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias www.mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
Respuestas:
Debe omitir el dominio
http://example.com
en ProxyPass y ProxyPassReverse y dejarlo como/
. Además, debe dejar/
al final deexample/
donde se está redirigiendo. Además, tuve algunos problemas conhttp://example.com
vs.http://www.example.com
- solo el www funcionó hasta que hice ServerName www.example.com y el ServerAlias example.com. Prueba lo siguiente.Después de realizar estos cambios, agregue los módulos necesarios y reinicie apache
fuente
/usr/sbin/setsebool -P httpd_can_network_connect 1
Resolví este problema con el siguiente código:
También usé:
fuente
Quería hacer exactamente esto para poder acceder a Jenkins desde el dominio raíz.
Descubrí que tenía que deshabilitar el sitio predeterminado para que esto funcionara. Esto es exactamente lo que hice.
E inserte esto en el archivo:
A continuación, debe habilitar / deshabilitar los sitios apropiados:
Espero que ayude a alguien.
fuente
Descubrí esto por prueba y error. Si su configuración especifica un ServerName, entonces su directiva VirtualHost tendrá que hacer lo mismo. En el siguiente ejemplo, awesome.example.com y amazing.example.com se enviarían a algún servicio local que se ejecute en el puerto 4567.
Sé que esto no responde exactamente a la pregunta, pero lo estoy poniendo aquí porque este es el principal resultado de búsqueda para el reenvío de puertos Apache. Así que supongo que algún día ayudará a alguien.
fuente
*:80
lugar deexample.com:80
significaba que el puerto no sería redirigido.Debe asegurarse de que el proxy esté habilitado en el servidor. Puede hacerlo utilizando los siguientes comandos:
fuente
Esta podría ser una vieja pregunta, pero esto es lo que hice:
En un archivo .conf cargado por apache:
Explicación: escuche todas las solicitudes al puerto 80 de la máquina local. Si solicité "
http://something.com/somethingorother
", reenvíe esa solicitud a "http://localhost:8080/somethingorother
". Esto debería funcionar para un visitante externo porque, de acuerdo con los documentos, asigna la solicitud remota al espacio del servidor local.Estoy ejecutando Apache 2.4.6-2ubuntu2.2, así que no estoy seguro de cómo el "-2ubuntu2.2" afecta la aplicabilidad más amplia de esta respuesta.
Después de realizar estos cambios, agregue los módulos necesarios y reinicie apache
fuente
Si no tiene que usar un proxy para JBoss y mydomain.com:8080 puede estar "expuesto" al mundo, entonces haría esto.
fuente
Simplemente use un proxy inverso en su configuración de apache (directamente):
Mira aquí para ver la documentación de apache sobre cómo usar el mod
fuente
Mi apache escucha 2 puertos diferentes,
Uso el 80 cuando quiero una URL transparente y no pongo el puerto después de la URL útil para los servicios de Google que no permiten la URL local.
Pero uso el 8080 para desarrollo interno donde uso el puerto como referencia para un "entorno de desarrollo"
fuente
Apache admite hosts virtuales basados en nombre y basados en IP. Parece que está utilizando ambos, lo que probablemente no sea lo que necesita.
Creo que en realidad está tratando de configurar un alojamiento virtual basado en nombres , y para eso no necesita especificar la dirección IP.
Intente <VirtualHost *: 80> para enlazar a todas las direcciones IP, a menos que realmente desee un alojamiento virtual basado en IP . Este puede ser el caso si el servidor tiene varias direcciones IP y desea servir diferentes sitios en diferentes direcciones. La configuración más común es (supongo) hosts virtuales basados en nombres.
fuente
Necesitas 2 cosas:
ServerAlias www.mydomain.com
a su configuraciónProxyPassMatch ^(.*)$ http://localhost:8080/example$1
, para evitar que mod_dir y las barras inclinadas interfieran.fuente
Todos son excelentes conocimientos para acceder a los puertos a través de nombres de dominio en servidores virtuales. Sin embargo, no olvide habilitar servidores virtuales; esto puede ser comentado:
Ejecutamos WSGI con un servidor Apache en el dominio sxxxx.com y un servidor golang que se ejecuta en el puerto 6800. Algunos cortafuegos parecen bloquear los nombres de dominio con puertos. Esta fue nuestra solución:
fuente
Esto también funciona en ISPConfig. En la lista de sitios web, ingrese a un dominio, haga clic en la pestaña Opciones, agregue estas líneas:;
Luego vaya al sitio web y wolaa :) Esto también está funcionando el protocolo HTTPS.
fuente
Prueba este
fuente