Once a uWSGI server is running, one may prefer to have Nginx as the reverse proxy to the uWSGI server. This set up is quite commonly used for example while deploying a Django project to production.
Here a simple configuration file has been added which can quickly set up the NGINX and uWSGI set up working. Just follow the next steps.
Note: the following steps have been tried out in Linux operating systems such as Ubuntu in this case.
- Initiate a uWSGI server listening to port 5000 (as an example port to be used for the following steps. Do not use port 80 or 443 or any other standard ports)
- Install Nginx
- Create a new file named "mywebsite" in the sites-available folder (/etc/nginx/sites-available)
- Insert the following content in the mywebsite file.
server {
listen 80;
server_name <domain/ip>;
location /static {
alias /path_to_staticfiles; # your project's static files location - amend as required
}
# Finally, send all non-media requests to the server.
location / {
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;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_pass http://0.0.0.0:5000; # Add your own server port here instead of 5000.
include uwsgi_params; # the uwsgi_params in nginx
}
}
server {
listen 80;
server_name yourdomain.com;
return 301 http://www.yourdomain.com$request_uri;
}
- Run the following command
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled
- Restart Nginx
sudo /etc/init.d/nginx restart
- That's it. You may be able to view the website now at standard http port 80.