django + nginx + uwsgi + ssl给出403反馈的禁止错误?

时间:2017-09-28 15:14:12

标签: python django ssl nginx uwsgi

我在生产中使用https运行django + nginx + uwsgi,前端使用react。

反应代码在开发期间向生产站点请求apis。当js代码使用POST时,它会导致403被禁止。我认为这是因为当使用ssl从localhost发布到生产站点时,host和referer标头不同。当我使用gunicorn时工作正常。我想找到一个解决方法,以便在开发react应用程序时可以从js代码发布。

这是我的nignx conf。

server {
        listen       80;
        server_name  www.tratoli.com,tratoli.com;
        #return 301 https://$host$1;
        rewrite ^(.*) https://www.tratoli.com$1 permanent;
    }
server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/sites-available/tratoli_ssl.crt;
        ssl_certificate_key /etc/nginx/sites-available/tratoli_ssl.key;
        server_name www.tratoli.com;

        location = /favicon.ico {
                alias /home/ubuntu/django/new_backend/favicon.ico;
         }

    location /static/ {
        alias /home/ubuntu/django/new_backend/static/;
    }
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///home/ubuntu/django/new_backend/tratoli/tratoli.sock;
    }

    location /chat/ {
        proxy_pass http://52.66.167.160:8000;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Origin '';
        proxy_read_timeout 300;
    }
    location ~* \.(?:jpg|jpe?g|png|gif|ico|css|js|eot|ttf|woff|otf)$ {
        root /home/ubuntu/django/new_backend/;
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public";
    }

    location =/sw.js {
        root /home/ubuntu/django/new_backend/static/react_mobile/js/;
    }

  }

这是我的uwsgi ini文件

[uwsgi]
socket = /home/ubuntu/django/new_backend/tratoli/tratoli.sock
uid = 1000
gid = 33
chdir = /home/ubuntu/django/new_backend/tratoli/
wsgi-file = tratoli/wsgi.py
processes = 4
threads = 30
chmod-socket = 777
env = DJANGO_ENVIRONMENT="production"
stats = 127.0.0.1:9191
logto = /var/log/uwsgi/%n.log

此外,我尝试在django设置中设置CSRF_TRUSTED_ORIGINS,即使这没有帮助。 任何想法?

0 个答案:

没有答案
相关问题