I denne artikkelen vil vi sette opp en VPS for å betjene Python-webapplikasjoner med Gunicorn og Nginx som en omvendt proxy. Vi bruker Nginx som en omvendt proxy i stedet for å tjene med Gunicorn direkte for å forhindre DoS-angrep på Gunicorn. Bruk av Nginx resulterer også i bedre ytelse (med proxy-buffring), og resulterer i at flere forespørsler blir håndtert.
Starter
Denne opplæringen forutsetter at du allerede har en VM med Ubuntu 14.04 eller nyere installert, oppdatert og sikret.
- Vår Nginx-forekomst vil kjøre på HTTP-port 80 (men du kan enkelt oppgradere til HTTPS).
- Vår eksempel Python app vil lytte på port 8080. Denne porten vil bli stengt på iptables for å forhindre ekstern tilgang.
- Denne opplæringen skal kjøre på andre distroer med minimale endringer.
Installer pip, virtualenv:
apt-get install python-pip python-virtualenv
Lukk port 8080. Gunicorn vil kun være tilgjengelig med Nginx.
iptables -A INPUT -p tcp --destination-port 8080 -j DROP
Opprett en ny mappe og konfigurer applikasjonen vår. Vi bruker Flask-rammeverket.
mkdir /var/www-folder/
cd /var/www-folder/
virtualenv exampleapp
source exampleapp/bin/activate
cd exampleapp
pip install gunicorn
pip install flask
Opprett applikasjonsfilen.
nano myapplication.py
Lim inn følgende inni:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Vultr!'
Dette vil produsere en enkel side som sier "Hei, Vultr!" når noen går inn på siden. Nå, start Gunicorn. Erstatt xmed 2 ganger antallet av VMs CPU-kjerner.
gunicorn -w x myapplication:app &
Installer Nginx og konfigurer omvendt proxy.
deactivate
apt-get install nginx
nano /etc/nginx/sites-enabled/default
Søk etter location / {linjen og erstatt innholdet innenfor parentesene med følgende innhold.
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/;
Denne konfigurasjonen instruerer Nginx til å videresende noe informasjon (HTTP-protokoll, ekstern IP-adresse) sammen med den faktiske forespørselen til Gunicorn-serveren. Last inn Nginx på nytt.
service nginx reload
På dette tidspunktet er Gunicorn-applikasjonen din riktig konfigurert. Du kan få tilgang til den ved å bruke en nettleser på http://your-vps-ip/.