Как сделать Редирект на TornadoWeb?

Здравствуйте. Подскажите пожалуйста, как сделать Redirect (или прописать параметр в самом Tornado, если там есть такая возможность), чтобы:

При запросе /static/template.css, TornadoWeb брал статику с другого поддомена (nginx), а не локально со своего сервера? Как я понял есть несколько вариантов:

1. Прописывать везде прямую ссылку на поддомен..
(не вариант, т.к. не универсальный, при смене домена, придется везде заменять ссылки и т.д.)
2. (Вопрос) Прописать RedirectHandler на ссылки вида /static/FILE_NAME?
3. (Вопрос) Прописать (где то?..) в Tornado, чтобы он статику сам брал с другого сервера
4. или может быть я упустил еще какой то вариант/способ?
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Tornado
Седой и строгий
Что значит "брал"? Берёт клиент, а сервер отдаёт. И лучше, чтобы на боевом сервере статику отдавал nginx, а не tornado. Я вижу два способа:
1. В конфигурации nginx указываете location /static/, в нём определяете откуда и как берётся статика (с локального сервера или редирект на другой сервер), а все остальные запросы апстримите на tornado.
2. В базовом классе для обработчиков tornado переопределяете метод get_template_namespace для того, чтобы во всех шаблонах был доступен адрес сервера статики
class BaseHandler(tornado.web.RequestHandler):
    def get_template_namespace(self):
        ns = super(BaseHandler, self).get_template_namespace()
        ns.update({
            'static_srv': 'static.domain.ru',
        })
        return ns
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы