Проксирование 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.15.x/deployment/proxying/