Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django + Nginx + Uwsgi see Nginx default page then run on 80 port

Tags:

nginx

django

I have Django app that runs on VPS using Nginx + Uwsgi.

The Symlink nginx config

# the upstream component nginx needs to connect to
    upstream django {
        server unix:///root/ubergf/client/uwsgi_nginx.sock; # for a file socket
        # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }

    # configuration of the server
    server {
        # the port your site will be served on
        listen      80;
        # the domain name it will serve for
        server_name my-site.com; # substitute your machine's IP address or FQDN
        charset     utf-8;

        # max upload size
        client_max_body_size 75M;   # adjust to taste

        # Django media
        location /media  {
        alias /root/ubergf/client/media;  # your Django project's media files - amend as required
        }

        location /static {
        alias /root/ubergf/client/staticfiles; # your Django project's static files - amend as required
        }

        # Finally, send all non-media requests to the Django server.
        location / {
        uwsgi_pass  django;
        include     /root/ubergf/client/deployment/uwsgi_params; # the uwsgi_params file you installed
        }
    }

uwsgi_params

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

ubergfapi_uwsgi.ini

[uwsgi]

chdir           = /root/ubergf/client
module          = ubergfapi.wsgi
master          = true
processes       = 10
socket          = /root/ubergf/client/uwsgi_nginx.sock
chmod-socket    = 666
vacuum          = true
env             = DEBUG_MODE=False

When I run everything on port 8000 (change in Symlink nginx config) everything works fine (my_domain.com : 8000), but when I change it back to 80 - my_domain.com returns me Nginx default page.

EDITED:

Tried to add to location section following params and got the same result

proxy_pass http://your_server_ip:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
like image 347
Alex Nikitin Avatar asked Feb 02 '21 15:02

Alex Nikitin


People also ask

Is Nginx required with uWSGI?

Can I then ditch NGINX? uWSGI could be used as a standalone web server in production, but that is not it's intentional use. It may sound odd, but uWSGI was always supposed to be a go-between a full-featured web server like NGINX and your Python files.


1 Answers

I added

uwsgi_param Host $host;
uwsgi_param X-Real-IP $remote_addr;
uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;

to location location and it worked

like image 137
Alex Nikitin Avatar answered Oct 19 '22 01:10

Alex Nikitin