У нас есть продукция JBoss, на которой работает наше Java-приложение. Мы настроили сервер Apache (DMZ) для маршрутизации трафика на рабочий сервер JBoss и повышения безопасности. Мы использовали модуль Apache mod_jk для маршрутизации в производство и Apache версии 2.2. Несколько месяцев он работал нормально, но какое-то время у нас возникает эта ошибка:
Bad Gateway
The proxy server received an invalid response from upstream server.
Мой worker.property на Apache:
worker.list=ws
worker.ws.port=8009
worker.ws.host=192.168.56.102
worker.ws.type=ajp13
В моем файле httpd.conf есть следующий виртуальный хост для этого воркера:
<virtualhost *:443>
ErrorLog "logs/dmz-error.log"
CustomLog "logs/dmz-access.log" common
JkMount /ws/ ws
JkMount /* ws
JkLogFile logs/mod_jk_prod.log
JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories
JkRequestLogFormat "%w %V %T"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</virtualhost>
JBoss работает в конфигурации по умолчанию. Эта система работала со старой версией Apache с такими же конфигурациями и маршрутизацией. Но нам нужно было заменить машину Apache, а также нас попросили обновить Apache до версии 2.2. Мы сталкиваемся с этой проблемой почти 2 месяца. Журнал Mod_jk показывает следующую ошибку:
[Tue Sep 23 11:52:01 2014][1392:1900] [error] ajp_get_reply::jk_ajp_common.c (2126): (ws) Tomcat is down or refused connection. No response has been sent to the client (yet)
[Tue Sep 23 11:52:01 2014][1392:4028] [error] ajp_get_reply::jk_ajp_common.c (2126): (ws) Tomcat is down or refused connection. No response has been sent to the client (yet)
Мы не можем найти решение этой проблемы. Когда отображается эта ошибка, обновление страницы несколько раз устраняет ее, но иногда мы не можем получить доступ к нашему приложению. Как я могу узнать настоящую причину этой ошибки? Некоторое тело, пожалуйста, помогите.
Вероятно, это происходит из-за того, что брандмауэр разрывает соединение ajp13 между mod_jk и JBoss. Однако это не проблема с брандмауэром, но, скорее всего, из-за настроек по умолчанию в файлах worker.properties mod_jk и JBoss.
В workers.properties
, Добавить:
worker.list=ws
worker.ws.port=8009
worker.ws.host=192.168.56.102
worker.ws.type=ajp13
worker.ws.socket_keepalive=True
worker.ws.connection_pool_timeout=600
"socket_keepalive"
отправит сообщения поддержки активности через сеанс ajp13 в JBoss.
"connection_pool_timeout"
закроет сеанс ajp13 через 10 минут бездействия.
В server.xml в разделе коннектора JBoss ajp13 (JBoss 4,5,6)
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
connectionTimeout="600000" />
JBoss 7 Сделайте подключение к веб-коннектору настраиваемым и Настройка тайм-аута коннектора jboss7 ajp