Я построил установку с Apache HTTP и Tomcat, которые обмениваются данными через mod_proxy. Я вставил конфигурацию, которую я использую ниже. Проблема, которую я испытываю, - потеря сеанса, и я думаю, что это связано с неправильной конфигурацией прокси. Я читал много статей, но до сих пор не могу понять, что я делаю неправильно.Как правильно настроить Apache HTTP - конфигурация Tomcat
httpd.conf:
<VirtualHost MACHINE_IP:80>
ServerName www.mydomain.com
ProxyRequests Off
ProxyPass /apps/my_app http://MACHINE_IP:8080/my_app
ProxyPassReverse /apps/my_app http://MACHINE_IP:8080/my_app
Header set P3P "CP=\"HONK\""
</VirtualHost>
<VirtualHost MACHINE_IP:443>
ServerName www.mydomain.com
ProxyRequests Off
ProxyPass /apps/my_app https://MACHINE_IP:8443/my_app
ProxyPassReverse /apps/my_app https://MACHINE_IP:8443/my_app
Header set P3P "CP=\"HONK\""
</VirtualHost>
Tomcat (на MACHINE_IP) работает на обычных портах 8080 и 8843 и настраивается следующим образом (Я думаю, что это конфигурация по умолчанию):
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="cert/tomcat.keystore"
keystorePass="password"
/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
Странно то, что когда я настраиваю любое прокси-имя и proxyPort в server.xml, а также доменное имя для хоста, все перестает работать. Вышеприведенный пример server.xml работает, но по какой-то причине происходит потеря сеанса.
Благодарим вас за ответ. Теперь проблема потери сеанса, похоже, исчезла. Могу ли я спросить вас, нужно ли мне добавить конфигурацию proxyName/proxyPort в Tomcat или внести какие-либо изменения в атрибут имени хоста? По моему мнению нет, поскольку Apache HTTP (который пересылает запросы) находится на одной машине. –
Если у вас несколько хостов, определенных в Tomcat (т. Е. Вы занимаетесь виртуальным хостингом в Tomcat), имя единого хоста по умолчанию не имеет значения. mod_proxy должен заботиться об исправлении хоста и порта, но он не может обрабатывать все случаи. Было бы нецелесообразно определять proxyHost и proxyPort в Tomcat только для того, чтобы быть в безопасности. –