Pull to refresh

Comments 18

Картинка к посту вызывает странные ассоциации.
Новая картинка лучше?
По мне старая лучше.

P.S. неблокируемую неблокирующую
Да и старая плохой не была. Даже всесело получилось :)
За старую стеcнялись голосовать :)
Если домен передается на backend через HTTP заголовок Host, то почему скрипты на этом самом backend'е это не используют? Или я чего-то очень сильно не понимаю?
Если есть доступ к backend и на нем есть возможность выставить нужную настройка, то проблемы нет. Целых два «если».
А можно увидеть реальный пример, когда это невозможно? Изначально же backend же должен реагировать на заголовок Host?..
Я понял вопрос. На бэкенд передается заголовок Host из запроса клиента, в нем изначально имя фронтэнда и его проксирует Nginx. Бэкенд реагирут на заголовок Host, но в нем уже содержится имя бэкенда.

Вы предлагаете:

а) Отключить проксирование заголовка Host в Nginx
б) СДелать чтобы бэкенд выдавал домен взятый из хоста.

Мне кажется что реализация а) прямо сломает работоспособность бекенда, например по заголовку host определяется Virtual Server

Реализация б) потенциальное отверстие в защите
Тоже самое — просто не устанавливать поле домена в куки.

За примером далеко ходить не нужно, вот ответ главной habrahabra

Set-Cookie:hfl=top; expires=Mon, 21-Nov-2011 09:46:33 GMT; path=/; domain=.habrahabr.ru

Если вы запроксируете хабр через Nginx, то несмотря на имя вашего сайта my-blackjack-habr-with-bitches.ru в кукак будет по прежнему domain=.habrahabr.ru Не будет работать авторизация и прочий функционал, который требует рабочих кук (может и к лучшему?)

Вы кончено можете обратится к админам и попросить выставлять домен .my-blackjack-habr-with-bitches.ru, или снять вообще эту установку, но есть подозрения что добиться реакции будет несколько сложнее, чем написать несколько строчек на Lua.
Пишем в конфиге nginx'a «proxy_set_header Host $host;» После этого на backend будет передаваться тот же заголовок Host, что и был передан на frontend. Ровно также все работает, если nginx'a вообще нет.

У меня все это прекрасно работает и в случае с Apache, и с Tomcat.
Поделюсь полезным знанием, как не прибегая к Lua и mod_sub заставить счастливо жить фронтэнд на nginx и бэкенд на Tomcat (в данном случае с jira)
Nginx слушает на порту 443 (https) и проксирует на порт 8080 к Tomcat'у. Чтобы приложение (Jira) не думало себе лишнего о том, на каком оно хостнэйме и порту живет, прописываем в конфиге Tomcat

<Connector port="8080"
...
scheme="https" secure="false"
proxyName="frontend.host.name.here" proxyPort="443"
...

и проблемы с ajax вас не будут беспокоить
а можно чуть подробнее про ajax проблемы с томкатом через нгинкс?
Урл для AJAX запроса часто генерируется приложением, а не определяется в JS из текущей схемы и адреса. В таком случае приложение определяет схему исходя из переменных, переданных ему веб сервером. Ну и если внутри страницы, запрошенной браузером через https, делается запрос к http, то JS возвратит ошибку. Указанный вариант обманывает приложение, говоря что схема запроса — HTTPS.
А всё-таки вы откопали очень интересную штуковину! Действительно, можно столько полезного на этом сделать…
UFO just landed and posted this here
Зарождается новая профессия — «Nginx — программист».
А теперь и про SEO-рерайт напишите :)
Sign up to leave a comment.

Articles