2015-11-26 2 views
1

Я хочу установить ssl для nginx, мой проект - django, и я также использую gunicorn в качестве wsgi http-сервера. добавить следующие строки в моем settings.py код:setup ssl on nginx для проекта django

CSRF_COOKIE_SECURE = True 
SESSION_COOKIE_SECURE = True 

Я не знаю, если это необходимо, чтобы сделать это, то я настроить мой Nginx в следующем виде:

upstream app_server { 
    server 127.0.0.1:6000; // your gunicorn server 
} 
server { 
    listen 80; 
    server_name <name>; 
    return 301 https://$host$request_uri; 
} 

server { 
    #listen 80; 
    listen 443 default ssl; 
    client_max_body_size 4G; 

    server_name <name>; 

    #ssl     on; 
    ssl_certificate  /etc/nginx/ssl/ssl.crt; 
    ssl_certificate_key /etc/nginx/ssl/ssl.key; 

    ssl_session_timeout 5m; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 
    keepalive_timeout 5; 

# path for static files 
    root /home/deploy/; 

    location /static/ { 
    } 
    location /media/ { 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     #proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_pass http://app_server; 
    } 

    error_page 500 502 503 504 /500.html; 
    location = /500.html { 
     root /home/deploy/static; 
    } 
} 

Nginx настроить правильно, я думаю, потому что его перенаправляют с 80 на 443, но ничего не происходит, 80 запросов отправлено, затем nginx перенаправляет его на 443, но ничего не происходит, он не может подключиться к gunicorn или проекту.

В чем проблема моего nginx? моя версия nginx nginx/1.0.15. я почти вижу похожие темы, и по их словам, моя конфигурация верна. Может кто-нибудь мне помочь? Должен ли я что-то делать с помощью стрельбы? мой сертификат самоподписан, или что мне делать?

привет :)

+0

Сначала попробуйте сделать это без SSL и затем добавить SSL. Попробуйте отладить запрос из вашего браузера с помощью Firebug или Chrome devtools - что они показывают? – baldr

+0

Привет, Мохаммад! Вы решили свою проблему? У меня тоже такая же проблема, как и вы. – BringBackCommodore64

ответ

1

Это конфигурация я использую для Nginx с gunicorn и она работает. Попробуй, посмотри, что получишь.

server { 
    listen 80; 
server_name something.com;        
access_log off; 
return 301 https://$server_name$request_uri; 
} 
server{ 
    server_name something.com; 
    listen 443 ssl; 
    ssl_certificate /path/to/file.crt; 
    ssl_certificate_key /path/to/privatekey.pem; 

location /static/ {    
    alias /opt/myenv/static/;     
} 
location/{         
    proxy_pass http://127.0.0.1:8001; 
    proxy_set_header X-Forwarded-Host $server_name; 
    proxy_set_header X-Real-IP $remote_addr; 
    add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    add_header Front-End-Https on; 
    proxy_redirect off; 

} 

Я думаю, что ключевым элементом является:

proxy_pass http://127.0.0.1:8001; 

Это перенаправляет запрос на gunicorn, если вы работаете его на порт 8001. Я думаю, что тот, что вам нужно добавить.

+0

Спасибо большое, но я использую socket для gunicorn, я сделал то, что вы сказали, но после перенаправления ничего не происходит. что проблема пушки? –

+0

Дайте мне больше информации о том, как вы используете сокет с оружием. Я установил реализацию socket.io с django раньше, если это то, о чем вы говорите, но для этого требуется, чтобы вы запускали два разных сервера, сервер gunicorn и сервер сокетов на разных портах. Это то, что вы получаете? –

+0

no я имею в виду unix доменное сокет. Я использую proxy_pass unix: /var/run/gunicorn/xxx.sock для app_server. –

Смежные вопросы