Проксирование HTTP
Многие предпочитают использовать автономный сервер Python HTTP и проксировать этот сервер через nginx, Apache и т.д.
Очень стабильным сервером Python является CherryPy. Эта часть документации показывает, как объединить ваше приложение WSGI с сервером WSGI CherryPy и как настроить веб-сервер для проксирования.
Создание сервера .py
Для запуска приложения вам нужен файл start-server.py, который запускает сервер WSGI.
Он выглядит примерно так:
from cherrypy import wsgiserver
from yourapplication import make_app
server = wsgiserver.CherryPyWSGIServer(('localhost', 8080), make_app())
try:
server.start()
except KeyboardInterrupt:
server.stop()
Если вы сейчас запустите файл, сервер будет слушать на localhost:8080. Имейте в виду, что приложения WSGI ведут себя немного иначе для проксированных установок. Если вы не разрабатывали свое приложение с учетом проксирования, вы можете применить middleware ProxyFix.
Настройка nginx
В качестве примера здесь показано, как настроить nginx для проксирования к серверу.
Базовая конфигурация nginx выглядит так:
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
}
Поскольку Nginx не запускает ваш сервер за вас, вам нужно сделать это самостоятельно. Вы можете либо написать скрипт init.d для этого, либо выполнить его внутри сессии screen:
$ screen $ python start-server.py
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/0.16.x/deployment/proxying/