Как перенаправить 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, поэтому любая помощь будет оценена. Спасибо!
1 ответ
Добавить трейлинг /
на ваш proxy_pass
линия, так это выглядит так:
proxy_pass https://tornadoserver/;
Это должно привести к тому, что nginx удалит часть URI для определения местоположения (в вашем случае /tornadoapp
Перед тем как передать его торнадо.
Также см. Документацию: http://nginx.org/en/docs/http/ngx_http_proxy_module.html