djangopython-2.7nginxgunicorn

(13: Permission denied) while connecting to upstream:[nginx]


I am working with configuring Django project with Nginx and Gunicorn.

While I am accessing my port gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 in Nginx server, I am getting the following error in my error log file;

2014/05/30 11:59:42 [crit] 4075#0: *6 connect() to 127.0.0.1:8001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "localhost:8080"

Below is the content of my nginx.conf file;

server {
    listen 8080;
    server_name localhost;
    access_log  /var/log/nginx/example.log;
    error_log /var/log/nginx/example.error.log;

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
    }
}

In the HTML page I am getting 502 Bad Gateway.

What mistake am I doing?


Solution

  • Disclaimer

    Make sure there are no security implications for your use-case before running this.

    Answer

    I had a similar issue getting Fedora 20, Nginx, Node.js, and Ghost (blog) to work. It turns out my issue was due to SELinux.

    This should solve the problem:

    setsebool -P httpd_can_network_connect 1
    

    Details

    I checked for errors in the SELinux logs:

    sudo cat /var/log/audit/audit.log | grep nginx | grep denied
    

    And found that running the following commands fixed my issue:

    sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
    sudo semodule -i mynginx.pp
    

    Option #2 (probably more secure)

    setsebool -P httpd_can_network_relay 1
    

    https://security.stackexchange.com/questions/152358/difference-between-selinux-booleans-httpd-can-network-relay-and-httpd-can-net

    References

    http://blog.frag-gustav.de/2013/07/21/nginx-selinux-me-mad/
    https://wiki.gentoo.org/wiki/SELinux/Tutorials/Where_to_find_SELinux_permission_denial_details
    http://wiki.gentoo.org/wiki/SELinux/Tutorials/Managing_network_port_labels