Nginx与uWSGI模块的配置主要用于将Nginx作为反向代理服务器,将请求转发给uWSGI服务器处理。以下是详细的配置说明和一个案例。

1. 安装Nginx和uWSGI

首先确保已经安装了Nginx和uWSGI。

sudo apt-get update
sudo apt-get install nginx
sudo apt-get install uwsgi uwsgi-plugin-python3

2. 配置uWSGI

创建一个uWSGI配置文件,例如myapp_uwsgi.ini

[uwsgi]
# 应用的主目录
chdir = /path/to/your/app
# WSGI模块
module = myapp.wsgi:application
# uWSGI的socket文件路径
socket = /path/to/your/app/myapp.sock
# 设置uWSGI进程的权限
chmod-socket = 660
# 清空环境变量
vacuum = true
# 主进程
master = true
# 进程数
processes = 4
# 线程数
threads = 2
# 日志文件
logto = /var/log/uwsgi/myapp.log

3. 配置Nginx

编辑Nginx的配置文件,通常位于/etc/nginx/sites-available/default,添加以下内容:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/path/to/your/app/myapp.sock;
    }

    location /static/ {
        alias /path/to/your/app/static/;
    }

    location /media/ {
        alias /path/to/your/app/media/;
    }
}

4. 启动uWSGI和Nginx

启动uWSGI服务:

uwsgi --ini /path/to/your/app/myapp_uwsgi.ini

重启Nginx服务:

sudo systemctl restart nginx

5. 案例

假设你有一个Django应用,路径为/home/user/myapp,WSGI模块为myapp.wsgi:application,静态文件路径为/home/user/myapp/static,媒体文件路径为/home/user/myapp/media

uWSGI配置文件myapp_uwsgi.ini

[uwsgi]
chdir = /home/user/myapp
module = myapp.wsgi:application
socket = /home/user/myapp/myapp.sock
chmod-socket = 660
vacuum = true
master = true
processes = 4
threads = 2
logto = /var/log/uwsgi/myapp.log

Nginx配置文件/etc/nginx/sites-available/default

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/user/myapp/myapp.sock;
    }

    location /static/ {
        alias /home/user/myapp/static/;
    }

    location /media/ {
        alias /home/user/myapp/media/;
    }
}

6. 验证配置

访问http://yourdomain.com,如果一切配置正确,你应该能够看到你的Django应用正常运行。

7. 日志查看

如果遇到问题,可以查看uWSGI和Nginx的日志文件:

  • uWSGI日志:/var/log/uwsgi/myapp.log

  • Nginx错误日志:/var/log/nginx/error.log

通过以上步骤,你应该能够成功配置Nginx与uWSGI模块,并将请求转发给uWSGI服务器处理。

本篇文章内容来源于:NginxuWSGI模块配置详细说明以及案例