Skip to main content
  • Nginx是轻量级的高性能Web服务器,提供了诸如HTTP反向代理、负载均衡等一系列重要特性

  • C语言编写,执行效率高

  • 作用:

    • -负载均衡,多台服务器轮流处理请求
    • -反向代理
  • 原理:

    • -客户端请求nginx,再由nginx将请求转发uWSGI运行的django

安装

sudo apt install nginx

可考虑换成国内源

查看是否安装成功

:~$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

配置

输入127.0.0.1后会出现welcome to nginx……表示成功

修改nginx的配置文件 /etc/nginx/sites-enabled/default;

sudo vim该文件

sudo nano /etc/nginx/sites-enabled/default

# 在server节点下添加新的location项,指向uwsgi的ip与端口
server {
···
location / {
uwsgi_pass 127.0.0.1:8000; # 重定向到127.0.0.1:8000端口
include /etc/nginx/uwsgi_params; # 将所有参数转到uwsgi下
}
···
}

sudo nginx -t会提示哪行有语法错误

启动/停止

启动|停止|重启
$ sudo /etc/init.d/nginx start|stop|restart|status
# 或
$ sudo service nginx start|stop|restart|status

注意:nginx配置只要修改,就要进行重启,否则不生效

修改uWSGI配置

因为原本接收的是http请求,现在传入的是uwsgi格式

uWSGI需要以socket模式启动

uwsgi.ini

# http=127.0.0.1:8000
socket=127.0.0.1:8000

注:改完后重启uWSGI

修改完后应访问127.0.0.1:80/端口,此时由nginx接收,然后传给uWSGI,uWSGI以8000端口接收

nginx静态文件配置

  1. 创建新路径-主要存放Django所有静态文件 如:/home/tarena/项目名_static/

  2. Django settings.py中添加新配置

    STATIC_ROOT = '/home/文件名/项目名_static/static'
    # 注意 此配置路径为 存放所有正式环境中需要的静态文件
  3. 进入项目,执行python3 manage.py collectstatic执行该命令后,Django将项目中所有的静态文件复制到STATIC_ROOT中,包括Django内建的静态文件

    !!!只要有新的添加就得重新运行一边!!!

Nginx配置中添加新配置

# file : /etc/nginx/sites-enabled/default
# 新添加location /static 路由配置,重定向到指定的第一步创建的路径
server {
···
location /static {
# root 第一步文件夹的绝对路径
root /home/文件名/项目名_static;
}
···
}

如果还是没显示静态资源

把 nginx.conf 里的第一行注释掉,改为 user root;