Hace un par de meses, configuré un servidor para una empresa de Australia. Ellos tenían un requerimiento especial con el cual yo no contaba experiencia: Configurar NGIX con soporte para SSL en Django.
Como los lectores de este blog sabran, mi forma preferida de desplegar un proyecto Django en producción es usando supervisord, nginx y gunicorn, en este post nos vamos a centrar en la parte de configuración de nginx y gunicorn.
Para gunicorn, la configuración fue realmente simple:
bind = "127.0.0.1:8002"
logfile = "/route/webapps/djsites/fun/etc/log/gunicorn.log"
workers = 2
loglevel = 'debug'
debug = True
secure_scheme_headers = {'X-FORWARDED-PROTOCOL': 'https'}
Algo que espero que les llame la atención es el parámetro de configuración secure_schema_headers que es el encargado de hacer que nuestra app django se comporte correctamente con el protocolo a usar en los enlaces y la parte de nginx no necesita usar reescritura de urls.
La configuración de nginx es realmente simple:
server
{
listen 80;
server_name domain.com.au www.domain.com.au;
rewrite ^(.*) https://domain.com.au$1 permanent;
}
server {
listen 443; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /var/www;
index index.html index.htm;
ssl on;
ssl_certificate ssl/domain.com.au_combinated.crt;
ssl_certificate_key ssl/domain.com.au.key;
# Make site accessible from http://localhost/
server_name domain.com.au www.domain.com.au;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
### Most PHP, Python, Rails, Java App can use this header ###
proxy_set_header X-Forwarded-Protocol https;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8002;
break;
}
}
location /static/ {
alias /home/webapps/djsites/fun/src/static/;
}
location /media/ {
alias /home/webapps/djsites/fun/src/media/;
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
}
Con esto, deben de tener nginx funcionando con su aplicación Django con SSL sin problemas
Comentarios
Los comentarios están deshabilitados.