Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Переопределить hostname
JBoss это не самая плохая j2ee крутилка, а тормозит то что он крутит :))
Ну это лирика.
Подобную задачу решал с помощью
http://sysoev.ru/nginx/docs/http/ngx_http_sub_module.html
там софт тож выдавал редиректы кривые, менял один хост на другой. Но
лучше "отрихтовать" приложение, чтоб оно выдавало
"правильные" редиректы. Решается если влоб сервлетным фильтром.
Или как вариант - nginx->apache2+mod_jk->jboss+jk_connector
http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch9.chapt.html#d0e22691
Vladimir Rusinov wrote:
Доброго времени суток!
Имеется nginx, который является фронтендом для некого jboss сервиса.
Проблема в том, что библиотека struts, используемая в jboss (или еще
какая-то) судя по всему берет значение доменного из запроса. По этому
есть делать proxy_pass http://127.0.0.1:8080/ везде, где используются
абсолютные адреса (<base ...> и редиректы) вылезает 127.0.0.1
<http://127.0.0.1>.
В качестве костылика было сделано следующее:
location / {
proxy_pass http://domain.name:8080/;
}
domain.name <http://domain.name> прописано в /etc/hosts как 127.0.0.1
<http://127.0.0.1>.
В результате jboss возвращает везде правильные ссылки
(http://domain.name/тратата), однако понятно что это костылик, который
делает распределение нагрузки и fail-over невозможным.
Jboss - жуткий монстр, который лучше не трогать лишний раз, да и я не
очень хорошо с ним знаком, поэтому (и еще по некоторым причинам) было
бы гораздо удобнее переопределить имя хоста с помощью nginx, т.е. я
хочу сделать что-то типа
location / {
proxy_pass http://127.0.0.1:8080/;
param hostname 'domain.name <http://domain.name>';
}
Дабы nginx коннектился на 127.0.0.1:8080 <http://127.0.0.1:8080>, а в
GET/POST/... запросах указывал domain.name <http://domain.name>.
Возможно это как-то можно сделать с помощью ngx_http_headers_module?
--
Vladimir Rusinov
Voronezh, Russia
UNIX Admin @ Murano Software
|