Назад | Перейти на главную страницу

Как перенаправить nginx на серверную часть торнадо с https

У меня nginx работает в качестве основного веб-сервера, но у меня также есть сервер торнадо, работающий по https на 127.0.0.1:8888 (та же машина, что и сервер nginx). Я хочу перенаправить трафик на мой сервер торнадо, когда пользователь переходит на http://myserver.com/tornadoapp. У меня это пока есть ...

# tornado server
upstream tornadoserver {
        server 127.0.0.1:8888;
}

server {
        listen  80 default_server;
        root    /var/www;
        location /tornadoapp {
                proxy_pass https://tornadoserver;
        }
}

Он действительно пересылает запрос моему серверному приложению торнадо, но торнадо генерирует эту ошибку ...

WARNING:tornado.access:404 GET /tornadoapp (127.0.0.1) 1.75ms

Итак, перенаправление будет на торнадо, но я получаю сообщение об ошибке, потому что торнадо не имеет обработчика для /tornadoapp. Имеются обработчики для /, /login, и /userи т. д. я надеялся использовать http://myserver.com/tornadoapp в качестве «псевдонима» или маски, чтобы URL-адрес выглядел безупречно для конечного пользователя (без номеров портов), таким образом ...

# When this is typed
http://myserver.com/tornadoapp/login

# they are directed here...
https://localhost:8888/login  

без URL-адреса, показывающего номер порта. Есть ли способ сделать это? Я просмотрел несколько примеров в Интернете, но большинство, похоже, связано с перенаправлением https на другие домены или с использованием / как расположение в серверном блоке. Ни один из них, похоже, не решает именно эту проблему. Если это невозможно или я ошибаюсь, дайте мне знать. Я новичок в nginx, поэтому любая помощь приветствуется. Спасибо!

Добавить трейлинг / на ваш proxy_pass строка, чтобы она выглядела так:

proxy_pass https://tornadoserver/;

Это должно привести к тому, что nginx удалит часть адреса URI (в вашем случае /tornadoapp) перед тем, как передать его торнадо.

Также смотрите документацию: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass