jkworkersfile - mod_jk so for apache 2.4 6
Cómo usar mod_rewrite con Apache-> mod_jk-> configuración de tomcat? (1)
Relacionado con algunas de mis preguntas anteriores.
Ahora tengo una configuración que me gusta bastante;
Apache httpd escuchando en el puerto 80 aceptando conexiones http y https. Varias instancias de Tomcat que se ejecutan en varios puertos AJP.
Mod_Jk está enviando diferentes solicitudes de URL a diferentes instancias de tomcat;
www.mydomain.com/demo -> tomcat:8101
www.mydomain.com/test -> tomcat:8102
www.mydomain.com/ -> tomcat:8100
Esto se logra con la siguiente configuración en httpd.conf (o subarchivos incluidos);
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
NameVirtualHost *:80
<VirtualHost *:80>
JkMount /demo* demoTomcat (workers.properties not shown)
JkMount /test* testTomcat
JkMount /* rootTomcat
</VirtualHost>
Y todo esto funciona genial. También tengo la configuración de SSL y la ejecución de conexiones https usando una etiqueta VirtualHost similar;
<VirtualHost _default_:443>
JkMount /demo* demoTomcat
JkMount /test* testTomcat
JkMount /* rootTomcat
... SSL Stuff follows ....
Lo que ahora estoy teniendo problemas es que mi certificado SSL es solo para www.midominio.com y no para mydominio.com.
Me han aconsejado que use las siguientes llamadas a mod_rewrite;
Options +FollowSymlinks
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www/.|$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [PT,L]
Los coloqué antes y después de las reglas de mod_jk en el archivo httpd.conf. Al principio, Apache se quejaba de que RewriteEngine era un comando no válido, pero desapareció cuando recordé el comando LoadModule primero :) Ahora Apache se reinicia muy bien, el servidor inicia y acepta las solicitudes y todo funciona de la forma en que lo hace ... pero eso es simplemente, estos comandos mod_rewrite parecen no tener ningún efecto?
Escribo http://mydomain.com
en el navegador y acabo de obtener mi sitio web como de costumbre. La url no parece cambiar a http://www.mydomain.com
y cuando comienzo a acceder a las áreas seguras recibo advertencias de que mydomain.com
NO está seguro y me está www.mydomain.com
de algún otro sitio web llamado www.mydomain.com
(por qué esto es un problema y no puede usar un poco de lógica para darse cuenta de que es el mismo sitio, ¡no lo sé!).
¿Estoy colocando las reglas de mod_rewrite en el lugar equivocado? He leído que debería funcionar, las reescrituras deberían cambiar la URL a www. y luego pasar a las cosas mod_jk para nada más?
Coloque este fragmento justo después de la última línea jkmount en su configuración de Apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} !^www/.example/.name$ [NC]
RewriteRule ^ https://www.example.name%{REQUEST_URI} [NE,L,R=301]
</IfModule>
Lo que esta regla está haciendo es IF esquema es https y su www.mydaomain.com
http NO es www.mydaomain.com
ENTONCES redirigir solicitud https://example.com/foo
a https://www.example.com/foo
con un estado de 301 http .