赞
踩
Django、Nginx 和 uWSGI 都是用于构建和运行 Web 应用程序的软件,这三个软件的概念如下:
Django、Nginx、uWSGI 之间的联系和区别主要体现在以下几个方面:
settings.py
文件中配置数据库、中间件、应用等信息;Nginx 需要在 nginx.conf
文件中配置监听端口、反向代理规则、静态文件路径等信息;uWSGI 需要在 uwsgi.ini
文件中配置项目路径、端口号、进程数等信息。总结一下:
正向代理和反向代理是两种不同的代理模式,它们的区别主要在于代理的对象和目的不同:
总之,正向代理和反向代理的区别就是看你是站在客户端的角度还是目标服务器的角度。正向代理是为了满足客户端的需求,而反向代理是为了满足目标服务器的需求。
要在 Django 应用程序中使用 Nginx 和 uWSGI,你需要做以下几个步骤:
apt
或 pip
命令来安装它们:apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring # 安装Nginx依赖包
apt-get update
apt-get install nginx # 安装Nginx
nginx -v # 查看版本号
systemctl start nginx # 启动Nginx
systemctl status nginx # 查看运行状态
# 如果systemctl指令报错可以使用service指令启动
service nginx start
service nginx status
pip install uwsgi # 安装uWSGI
sudo /etc/init.d/nginx start # 启动Nginx服务
uwsgi --ini scripts/uwsgi.ini # 启动uWSGI服务(假设配置文件在scripts目录下)
ini
文件,指定你的项目目录、模块、端口、进程、日志等信息。conf
文件,指定你的监听端口、服务器名、静态文件路径、反向代理规则等信息。systemctl/service
或 uwsgi
命令来启动它们。Nginx 配置文件的位置一般是在 /etc/nginx/nginx.conf
,它用来定义 Nginx 服务器的基本参数。Nginx 配置文件的语法格式是由多个块组成,每个块用花括号 {}
包围,每个指令用分号 ;
结束。例如,一个简单的 Nginx 配置文件可以写成这样:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen 80; # 监听80端口,作为默认服务器
server_name app4007.acapp.acwing.com.cn; # 服务器名,可以是域名或IP地址
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl; # 将80端口的HTTP请求重定向到443端口的HTTPS请求,提高安全性,使用SSL证书和协议来保证HTTPS请求的加密和验证
server_name app4007.acapp.acwing.com.cn;
ssl_certificate cert/acapp.pem;
ssl_certificate_key cert/acapp.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
charset utf-8;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
client_max_body_size 10M;
location / { # 匹配所有请求路径
include /etc/nginx/uwsgi_params; # 包含uWSGI的请求参数
uwsgi_pass 127.0.0.1:8000; # 转发请求给uWSGI服务器,由Django应用程序处理
uwsgi_read_timeout 60; # 设置uWSGI的读取超时时间
}
location /static { # 匹配以'/static'开头的请求路径,将以'/static'开头的请求直接返回静态文件内容,提高效率
alias /home/asanosaki/djangoapp/static/; # 指定静态文件存放的目录
}
location /wss { # 匹配以'/wss'开头的请求路径,将以'/wss'开头的请求转发给WebSocket服务器,实现双向通信
proxy_pass http://127.0.0.1:5015;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
uWSGI 配置文件的位置可以自己指定,一般放在项目目录下,假设我们在项目根目录下的 scripts/uwsgi.ini
文件中。uWSGI 配置文件的语法格式是由多个节组成,每个节用方括号 []
包围,每个指令用等号 =
赋值。例如,一个简单的 uWSGI 配置文件可以写成这样:
[uwsgi]
socket = 127.0.0.1:8000 # 用于和Nginx进行数据交互的端口
chdir = /home/asanosaki/djangoapp # Django项目的根目录,使用绝对路径
wsgi-file = djangoapp/wsgi.py # wsgi.py在Django项目中的位置
master = true # 启动主进程,来管理其他进程
processes = 2 # 最大开启的进程数
threads = 5 # 每个进程的线程数
vacuum = true # 当服务器退出的时候自动删除unix socket文件和pid文件,避免在下次启动服务器时出现文件冲突或占用的问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。