错误请求(400)和502错误:Nginx,gunicorn,django

时间:2015-04-11 19:33:24

标签: python django nginx gunicorn

我正在尝试使用nginx,gunicorn和django部署我的网站。

当我运行gunicorn并首先加载页面时,我收到502错误的网关错误然后我将服务器名称切换到我的服务器的IP地址,现在我收到错误请求400错误或域无法成为找到。

我一直在关注Test Driven Development中的这些步骤。

昨晚我意识到我正在使用我的登台服务器来更新我的实时域而不是暂存域。所以我创建了一个暂存域作为活动域的子域,并为它创建了一个单独的目录,然后git拉下了我之前完成的工作,但它没有用。

我的nginx配置文件:

 server {
     listen 80;
     server_name my-server-ip-address;

     location / {
          proxy_set_header Host $host;
          proxy_pass http://unix:/tmp/mysitename.socket;
     }

      location /static {
         autoindex on;
         root /home/cmac/sites/mysitename/;
     }

 }

Nginx错误日志:

  

2015/04/11 18:59:16 [错误] 18650#0:* 494 connect()来   unix:/tmp/mysitename.socket失败(111:连接被拒绝)而   连接到上游

我的settings.py:

 DEBUG = False

 TEMPLATE_DEBUG = DEBUG

 ALLOWED_HOSTS = [mysitename]

当我跑枪时:

 [2015-04-11 20:40:39 +0000] [4174] [INFO] Starting gunicorn 19.3.0
 [2015-04-11 20:40:39 +0000] [4174] [INFO] Listening at:      http://127.0.0.1:8000 (4174)
 [2015-04-11 20:40:39 +0000] [4174] [INFO] Using worker: sync
 [2015-04-11 20:40:39 +0000] [4177] [INFO] Booting worker with pid: 4177

在决定切换域名之前,事情正在发生。

编辑整个nginx.conf文件

user  cmac;
worker_processes  1;


error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    include       /etc/nginx/sites-enabled/mysitename;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

        sendfile        on;
        #tcp_nopush     on;

        #keepalive_timeout  0;
        keepalive_timeout  65;

        #gzip  on;

        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;

        index   index.html index.htm;

        server {
            listen       80;
            server_name  localhost;
            root         /usr/share/nginx/html;

            #charset koi8-r;

            #access_log  /var/log/nginx/host.access.log  main;

location / {
        }

        # redirect server error pages to the static page /40x.html
        #
        error_page  404              /404.html;
        location = /40x.html {
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    root         html;


 #    location / {
#    }
#}


# HTTPS server
#
#server {
#    listen       443;
#    server_name  localhost;
#    root         html;

#    ssl                  on;
#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_timeout  5m;

#    ssl_protocols  SSLv2 SSLv3 TLSv1;
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers   on;

#    location / {
#    }
#}

包含文件(来自 / etc / nginx / sites-enabled / mysitename ):

server {
    listen 127.0.0.1;
    server_name my-server-ip-address;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://unix:/tmp/mysitename.socket;

    }

     location /static {
        autoindex on;
        root /home/cmac/sites/mysitename/;
    }

}
~                                                                                                                               
~ 

1 个答案:

答案 0 :(得分:0)

mysitename中你需要监听端口80server_name作为你的暂存域,如staging.example.com,目前也不要使用unix sock,把http://127.0.0.1:8000中的proxy_pass gunicorn 所服务的位置相同。请尝试在nginx.conf中注释掉服务器块,它与您的mysitename存在冲突。

此外,您确定用户cmac在您的目录/文件下具有权限吗?通常它在www-data上运行。

希望这有帮助。