2015-12-30 2 views
1

Я пытаюсь развернуть свой сервер с помощью Gunicorn поверх https. Однако, независимо от того, какую конфигурацию nginx я использую, я всегда получаю ошибку атрибута в Gunicorn. Я не думаю, что проблема кроется с Nginx, хотя, но с оружием. Но я не знаю, как это исправить. Вот команда, я использую, чтобы начать свой сервер:AttributeError при попытке развернуть gunicorn с HTTPS

gunicorn -b 0.0.0.0:8000 --certfile=/etc/ssl/cert_chain.crt --keyfile=/etc/ssl/server.key pyhub2.wsgi 

А вот мой файл Nginx конфигурации:

server { 
    # port to listen on. Can also be set to an IP:PORT 
    listen 80; 
    server_name www.xxxxx.co; 
    rewrite^https://$server_name$request_uri? permanent; 
    include "/opt/bitnami/nginx/conf/vhosts/*.conf"; 
    } 

    server { 
    # port to listen on. Can also be set to an IP:PORT 
    listen 443; 
    ssl on; 
    ssl_certificate /etc/ssl/cert_chain.crt; 
    ssl_certificate_key /etc/ssl/server.key; 
    server_name www.xxxx.co; 
    access_log /opt/bitnami/nginx/logs/access.log; 
    error_log /opt/bitnami/nginx/logs/error.log; 
    location /xxxx.txt { 
     root /home/bitnami; 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $scheme; 
     proxy_buffering off; 
     proxy_pass https://0.0.0.0:8000; 
    } 
    location /status { 
     stub_status on; 
     access_log off; 
     allow 127.0.0.1; 
     deny all; 
    } 
    # PageSpeed 
    #pagespeed on; 
    #pagespeed FileCachePath /opt/bitnami/nginx/var/ngx_pagespeed_cache; 
    # Ensure requests for pagespeed optimized resources go to the pagespeed 
    # handler and no extraneous headers get set. 
    #location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } 
    #location ~ "^/ngx_pagespeed_static/" { } 
    #location ~ "^/ngx_pagespeed_beacon$" { } 
    #location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; } 
    #location /ngx_pagespeed_message { allow 127.0.0.1; deny all; } 
    location /static/ { 
     autoindex on; 
     alias /opt/bitnami/apps/django/django_projects/PyHub2/static/; 
    } 
    location /admin { 
     proxy_pass https://127.0.0.1:8000; 
     allow 96.241.66.109; 
     deny all; 
    } 
    location /robots.txt { 
     root /opt/bitnami/apps/django/django_projects/PyHub2; 
    } 

    include "/opt/bitnami/nginx/conf/vhosts/*.conf"; 
    } 

Ниже ошибка, что я получаю, когда пытается подключиться:

Traceback (most recent call last): 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 515, in spawn_worker 
    worker.init_process() 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process 
    self.run() 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 119, in run 
    self.run_for_one(timeout) 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 66, in run_for_one 
    self.accept(listener) 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 30, in accept 
    self.handle(listener, client, addr) 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 141, in handle 
    self.handle_error(req, client, addr, e) 
    File "/opt/bitnami/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 213, in handle_error 
    self.log.exception("Error handling request %s", req.uri) 
AttributeError: 'NoneType' object has no attribute 'uri' 
[2015-12-29 22:12:26 +0000] [1887] [INFO] Worker exiting (pid: 1887) 
[2015-12-30 03:12:26 +0000] [1921] [INFO] Booting worker with pid: 1921 

И мой WSGI по запросу Клаус Д. ""» WSGI конфигурации для pyhub2 проекта.

It exposes the WSGI callable as a module-level variable named ``application``. 

For more information on this file, see 
https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ 
""" 

import os 

from django.core.wsgi import get_wsgi_application 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pyhub2.settings") 

application = get_wsgi_application() 
+0

Попробуйте найти полный трафик ошибок в своих журналах и добавить его в свой пост. –

+0

... и что в 'pyhub2.wsgi'? –

+0

@KlausD. мой проект django. –

ответ

0

Если nginx обрабатывает переговоры по SSL, а стрельба идет вверх по течению, вам не нужно пропускать --certfile=/etc/ssl/cert_chain.crt --keyfile=/etc/ssl/server.key при запуске пушки.

Вы можете попробовать конфигурацию Nginx к мелодии:

upstream app_server { 
    server 127.0.0.1:8000; 
} 

server { 
    listen 80; 
    listen [::]:80 default_server ipv6only=on; 
    server_name www.xxxxx.co; 

    # Redirect to SSL 
    rewrite^https://$server_name$request_uri? permanent; 
    include "/opt/bitnami/nginx/conf/vhosts/*.conf"; 
} 

server { 
    # Listen for SSL requests 
    listen 443; 
    server_name www.xxxx.co; 

    ssl on; 
    ssl_certificate /etc/ssl/cert_chain.crt; 
    ssl_certificate_key /etc/ssl/server.key; 


    client_max_body_size 4G; 

    keepalive_timeout 5; 

    location = /favicon.ico { access_log off; log_not_found off; } 

    access_log /opt/bitnami/nginx/logs/access.log; 
    error_log /opt/bitnami/nginx/logs/error.log; 

    location /xxxx.txt { 
     root /home/bitnami; 
    } 

    location /status { 
     stub_status on; 
     access_log off; 
     allow 127.0.0.1; 
     deny all; 
    } 

    location /static { 
     autoindex on; 
     alias /opt/bitnami/apps/django/django_projects/PyHub2/static; 
    } 

    location /admin { 
     include proxy_params; 

     proxy_set_header X-Forwarded-For $scheme; 
     proxy_set_header X-Forwarded-Proto $scheme; 

     # Proxy to upstream app_server 
     proxy_pass http://app_server; 

     allow 96.241.66.109; 
     deny all; 
    } 

    location /robots.txt { 
     root /opt/bitnami/apps/django/django_projects/PyHub2; 
    } 

    location/{ 
     try_files $uri @app_proxy; 
    } 

    location @app_proxy { 
     # Handle requests, proxy to SSL 
     include proxy_params; 

     proxy_set_header X-Forwarded-For $scheme; 
     proxy_set_header X-Forwarded-Proto $scheme; 

     # Proxy to upstream app_server 
     proxy_pass http://app_server; 
    } 

    include "/opt/bitnami/nginx/conf/vhosts/*.conf"; 
} 

Кроме того, вы можете попробовать запуск gunicorn с --check-config флагом, чтобы проверить на наличие ошибок конфигурации вне SSL, и убедитесь, что вы в состоянии доступ: 8000 локально без SSL.

+0

Спасибо за ответ! Когда я использовал ваш код, вместо того, чтобы делать то, что он должен, он просто перенаправляет меня на https://127.0.0.1. –

+0

Эй, Дориан, я отредактировал свой ответ и включил полную конфигурацию nginx, основанную на вашем образце. Когда вы говорите, что перенаправляется на 127.0.0.1, успешно ли он доступен для Django, но не через SSL? Что находится в «/opt/bitnami/nginx/conf/vhosts/*.conf»? –

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