apache - servidor - redirigir un subdominio
Cómo redirigir diferentes solicitudes de subdominio a diferentes puertos (5)
Asumiré que tiene su propia razón para querer que los dos sitios ( www
y blog
) se ejecuten en diferentes puertos, y en diferentes procesos. Si esto no es lo que pretendía, por ejemplo, no quería tener dos procesos distintos, entonces tener puertos diferentes puede que tampoco sea lo que deseaba: use VirtualHost
lugar, para hospedar los dos dominios dentro de la misma instancia de apache + php en puerto 80. De lo contrario, sigue leyendo.
Suponiendo que tiene sus dos procesos de apache + php escuchando en localhost: 82 y localhost: 83 respectivamente, active un tercer proceso, solo de apache, para actuar como un proxy inverso. Haga que la instancia de apache de proxy inverso escuche las solicitudes que llegan desde el puerto 80 desde Internet, con dos definiciones de host virtual. La primera definición de host virtual, www
, reenviaría las solicitudes a localhost: 82, mientras que la segunda definición de host virtual, blog
, reenviaría las solicitudes a locahost: 83, por ejemplo:
NameVirtualHost *:80
# www
<VirtualHost *:80>
ServerName www.myexample.com
ProxyPass / http://localhost:82/
ProxyPassReverse / http://localhost:82/
</VirtualHost>
# blog
<VirtualHost *:80>
ServerName blog.myexample.com
ProxyPass / http://localhost:83/
ProxyPassReverse / http://localhost:83/
</VirtualHost>
Tengo dos aplicaciones, una es www.myexample.com
, otra es blog.myexample.com
. Estoy usando PHP y Apache.
Ahora, quiero que www.myexample.com
ejecute en el puerto 82 de mi máquina y blog.myexample.com
en el puerto 83, en la misma máquina. ¿Cómo configurar los scripts de apache y / o PHP para que cuando las solicitudes de las solicitudes se atienden correctamente?
Edit: gracias a todos los que responden, pero me temo que no puedo aclarar la pregunta: ¡qué mal!
Lo que realmente quiero es simular una condición por la cual www.myexample.com y blog.myexample.com se encuentran en diferentes máquinas. Entonces, cuando llega una solicitud, el servidor de la puerta de enlace (el que también aloja www.myexample.com) verificará si se trata de una solicitud para www.myexample.com o para blog.myexample.com y realiza las redirecciones necesarias.
¿Como hacer esto? Gracias.
Ejecute la siguiente línea en el terminal (especifique su nombre de dominio y subdominio correctamente)
sudo nano /etc/apache2/sites-available/subdomain.domain.com.conf
Pegue el siguiente código y cambie como su requisito
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName subdomain.domain.com
ServerAlias subdomain.domain.com
ProxyRequests Off
#ProxyPass / http://localhost:8080/
<Location />
ProxyPreserveHost On
ProxyPass http://domain.com:8080/
ProxyPassReverse http://domain.com:8080/
</Location>
# Uncomment the line below if your site uses SSL.
#SSLProxyEngine On
</VirtualHost>
Ejecute las siguientes líneas en el terminal (especifique su nombre de dominio y subdominio correctamente)
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod subdomain.domain.com.conf
sudo service apache2 restart
Fuera de la parte superior de mi sombrero:
Listen 82
Listen 83
NameVirtualHost 1.2.3.4 # Use your server''s IP here
<VirtualHost www.myexample.com:82>
# Configure www.myexample.com here
</VirtualHost>
<VirtualHost blog.myexample.com:83>
# Configure blog.myexample.com here
</VirtualHost>
Una respuesta más completa a esto sería hacer algo como esto que le permita configurar una puerta de enlace proxy, que es lo que se describe con más facilidad anteriormente.
Nombre del servidor localhost
<Proxy *>
Order deny,allow
Allow from localhost
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:10081/
ProxyPassReverse / http://localhost:10081/
ProxyPassReverseCookiePath / http://localhost:10081/
Yo uso proxy para este tipo de cosas.
En mi ejemplo, tengo apache 1.3 ejecutándose en el puerto 80, pero necesitaba el repositorio svn para ejecutarlo en apache 2.2, y no quería escribir: 82 al final del dominio cada vez. Así que hice la redirección de proxy en Apache 1.3 (puerto 80):
<VirtualHost *:80>
ServerName svn.mydomain.com
ServerAlias svn
ServerAdmin [email protected]
<IfModule mod_proxy.c>
ProxyPass / http://svn:82/
</IfModule>
</VirtualHost>