Ebben a cikkben egy VPS-t állítunk be a Python webalkalmazások kiszolgálására Gunicorn és Nginx segítségével fordított proxyként. Az Nginxet fordított proxyként használjuk ahelyett, hogy közvetlenül a Gunicornnal szolgálnánk ki, hogy megakadályozzuk a Gunicorn elleni DoS-támadásokat. Az Nginx használata jobb teljesítményt is eredményez (proxy puffereléssel), és több kérés kezelését eredményezi.
Elkezdeni
Ez az oktatóanyag feltételezi, hogy már rendelkezik telepített, frissített és biztonságos Ubuntu 14.04-es vagy újabb verziójú virtuális géppel.
- Nginx-példányunk a 80-as HTTP-porton fog futni (de könnyen frissíthet HTTPS-re).
- Példa Python-alkalmazásunk a 8080-as porton figyel. Ez a port zárva lesz az iptables-on a távoli hozzáférés megakadályozása érdekében.
- Ennek az oktatóanyagnak minimális változtatásokkal más disztribúciókon is futnia kell.
Telepítés pip, virtualenv:
apt-get install python-pip python-virtualenv
Zárja be a 8080-as portot. A Gunicorn csak az Nginx által lesz elérhető.
iptables -A INPUT -p tcp --destination-port 8080 -j DROP
Hozzon létre egy új mappát, és konfigurálja az alkalmazásunkat. A Flask keretrendszert fogjuk használni.
mkdir /var/www-folder/
cd /var/www-folder/
virtualenv exampleapp
source exampleapp/bin/activate
cd exampleapp
pip install gunicorn
pip install flask
Hozza létre az alkalmazásfájlt.
nano myapplication.py
Illessze be a következőket:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Vultr!'
Ez egy egyszerű oldalt hoz létre, amely a következő szöveggel jár: "Hello, Vultr!" amikor valaki belép az oldalra. Most indítsa el a Gunicornt. Cserélje xki a virtuális gép CPU magjainak kétszeresére.
gunicorn -w x myapplication:app &
Telepítse az Nginx-et, és konfigurálja a fordított proxyt.
deactivate
apt-get install nginx
nano /etc/nginx/sites-enabled/default
Keresse meg a location / {sort, és cserélje ki a zárójelben lévő tartalmat a következő tartalommal.
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8000/;
Ez a konfiguráció arra utasítja az Nginxet, hogy a tényleges kéréssel együtt továbbítson bizonyos információkat (HTTP protokoll, távoli IP-cím) a Gunicorn szervernek. Töltse újra az Nginxet.
service nginx reload
Ezen a ponton a Gunicorn alkalmazás megfelelően konfigurálva van. Egy webböngészővel érheti el a címen http://your-vps-ip/.