Pregunta Apache NameVirtualHost en el puerto 443 ignora ServerAlias


Tengo una configuración de host virtual basada en el nombre en el puerto 443, de modo que las solicitudes en el host 'apple.fruitdomain' se envían por proxy a la aplicación de Apple y las solicitudes en el host 'orange.fruitdomain' están dirigidas a la aplicación de orange. Esto está funcionando, pero me gustaría agregar un ServerAlias ​​para cada uno de los casos en que las solicitudes en el host 'apple' se dirijan a la aplicación de Apple y las solicitudes en el host 'orange' se dirijan a la aplicación de la naranja. Si simplemente agrego una directiva ServerAlias ​​al host virtual, no funciona. ssl.conf abajo:

Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
ServerName apple.fruitdomain
ServerAlias apple
SSLProxyEngine on
ProxyPass /apple-app https://localhost:8181/apple-app
ProxyPassReverse /apple-app https://localhost:8181/apple-app
...
</VirtualHost>
<VirtualHost *:443>
ServerName orange.fruitdomain
ServerAlias orange
SSLProxyEngine on
ProxyPass /orange-app https://localhost:8181/orange-app
ProxyPassReverse /orange-app https://localhost:8181/orange-app
...
</VirtualHost>

Curiosamente, si hago una configuración similar pero con el puerto 80, ServerAlias ​​funciona ...


6
2018-04-05 22:04


origen


¿Qué quieres decir con "no funciona?" - cjc
Hace el orange nombre resuelto a la dirección correcta? ¿Qué comportamiento está viendo desde su navegador cuando intenta conectarse? - Shane Madden♦
Cuando digo que no funciona, me refiero a que no se encuentra la aplicación proxy: el navegador devuelve un 404 que no se encuentra. Supongo que la selección de coincidencias de alojamiento virtual es lo que no funciona. - Ryan
Nota: la resolución de nombres funciona porque si navego a la raíz con el nombre corto 'naranja' o 'manzana', aparece el índice de la raíz. Si agrego en la parte 'orange-app' o 'apple-app' es cuando obtengo 404. - Ryan
@Ryan ¿Puede verificar si el oyente del puerto 8181 está recibiendo la solicitud de proxy y devolviendo el 404 en sí? ¿Registra las solicitudes? Tal vez establecer un rápido Redirect ¿Directivo a uno de los frutos pero no al otro para verificar que se está alcanzando el vhost correcto? Además, ¿puede verificar y asegurarse de que no haya devuelto nada inesperado de apache2ctl -S? - Shane Madden♦


Respuestas:


Bueno, según mis pruebas, parece que la directiva ServerAlias ​​se ignora cuando se utiliza el alojamiento virtual basado en nombres en el puerto 443 con Apache 2.2.15. Esto se debe probablemente al requisito especial del protocolo SNI (SNI - Wikipedia; SNI - Apache Wiki). La solución es crear dos hosts virtuales separados; de mi ejemplo, uno tendría ServerName orange.fruitdomain y el otro tendría ServerName orange.


6
2018-04-09 14:59



Cualquier tipo de alojamiento virtual basado en nombre que use SSL requerirá SNI, no solo hosts con múltiples alias. Sospecho que no tienes la respuesta correcta aquí. - James Yale
Creo que entendiste mal mi respuesta. No estoy diciendo que solo los hosts con alias requieran SNI. Estoy diciendo que se está utilizando SNI ya que estoy trabajando con SSL (puerto 443) y esto puede explicar por qué, al igual que todo lo demás, el alias funciona para todos los demás puertos. - Ryan


Para corregir la configuración subrayada, debe crear otro VirtualHost para propósitos "predeterminados" usando:

    ServerName localhost
or
    ServerName your_server_name

Por favor verifique los documentos httpd de Apache (Ej.) - http://httpd.apache.org/docs/2.2/mod/core.html#servername

La directiva ServerName establece el esquema de solicitud, el nombre de host y el puerto que el servidor utiliza para identificarse. Esto se utiliza al crear direcciones URL de redirección.   Además, ServerName se usa (posiblemente junto con ServerAlias) para identificar de forma única un host virtual, cuando se usan hosts virtuales basados ​​en nombres.


0
2017-09-28 12:44





comente la línea de escucha 443 porque la escucha comienza con el ssl automáticamente y si la inicia antes, verá un conflicto.


-2
2018-05-23 16:58





http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI


-7
2018-04-05 22:22



Si bien esto puede responder teóricamente a la pregunta, sería preferible para incluir las partes esenciales de la respuesta aquí, y proporcionar el enlace de referencia. - Iain
Entonces, si la respuesta es completa e incluye análisis de problemas y solución de problemas, ¿no es preferible? Estoy confundido. - Kondybas
Demasiados enlaces solo respuestas mueren. Realmente preferimos que las respuestas contengan contenido, no punteros a contenido. Puede publicar una descripción del contenido remoto para su respuesta y el enlace de aclaración, pero no solo un enlace. - Iain
El documento vinculado no proporcionó ninguna pista de por qué ServerAlias ​​no está funcionando. Ya tengo un alojamiento virtual basado en el nombre en el puerto 443 trabajando en el caso simple. - Ryan