Django + uWSGI + Nginx + SSL - 工作配置请求(强调SSL)

时间:2015-04-23 14:59:41

标签: django ssl nginx uwsgi

有没有人有这四种工作配置?

- Django
- uWSGI
- Nginx
- SSL 

主要问题是如何正确设置SSL?我已经搜索了很多东西,仍然无法让它发挥作用。我有一个http unix sockets的工作设置,但就我所能做到的那样。

还发布了一些其他答案,但它们主要是代码段,而不是整个配置。

2 个答案:

答案 0 :(得分:12)

server {
    listen          80;
    server_name     example.com;
    rewrite ^/(.*)  https://example.com/$1 permanent;
}

server {
    listen          443 ssl;
    server_name     example.com;
    access_log      /var/log/nginx/example.com_access.log combined;
    error_log       /var/log/nginx/example.com_error.log error;

    ssl_certificate         /etc/nginx/ssl/example-unified.crt;
    ssl_certificate_key     /etc/nginx/ssl/example.key;

    location /static/ {
        alias /webapps/example/static/;
    }

    location /media/ {
        alias /webapps/example/media/;
    }

    location / {
        proxy_pass         http://localhost:8000/;
        proxy_redirect     off;

        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    }

}

这是基本的nginx配置,可以使用SSL,并将请求转发到在端口8000上运行的uwsgi(如果需要,可以将其更改为套接字)。

对于高级SSL设置,请检查THIS

答案 1 :(得分:1)

我是nginx,uwsgi和ssl的新手。这里分享我的测试nginx和uwsgi配置。

基本上,部署Django有四个步骤,仅支持SSL / HTTPS。

  1. 设置SSL证书
    • 使用openssl生成server.crt和server.key
        

      openssl req -new -x509 -nodes -out server.crt -keyout server.key

  2. 在Django项目下配置nginx.conf和uwsgi.ini
    • 设置nginx.conf(抱歉,文本块中的布局很奇怪,所以我在这里插入一张图片。) enter image description here
    • 从/ etc / nginx / sites-enabled到此文件的符号链接,以便nginx可以看到它
        

      sudo ln -s /path/to/django/example_nginx.conf / etc / nginx / sites-enabled /

    • 在django项目下的
    • config uwsgi.ini enter image description here
  3. 配置settings.py

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    SECURE_SSL_REDIRECT = True
    
  4. 重新启动nginx和uwsgi

    • 重启nginx
        

      sudo /etc/init.d/nginx restart

    • 运行uwsgi
        

      uwsgi --ini /path/to/django/example_uwsgi.ini