学习笔记

nginx(负载均衡/反向代理)

by 猪皮怪, 2022-08-04


配置项存放地址 /www/server/panel/vhost/nginx
命令1 sudo /etc/init.d/nginx start | stop | restart | status
命令2 sudo /etc/init.d/nginx start | stop | restart | status(可以用在Ubuntu中)

负载均衡

当用户量访问过大,可以将访问请求分散均匀转发到不同服务器处理。

反向代理

客户发过来的请求,nginx接收之后默默转发给其他服务器。

配置

#    固定格式
server
{
    
    #    listen 80;
    #    server_name _;
    #    index index.html;
    #    root /www/server/nginx/html;
    ......
    
    #    location后面的/相当于路由
    location / {
            #该项一定要禁,否则nginx会扫描整个文件目录,匹配路由中对应文件给用户。
            #try_files $uri $uri/ =404;
            #    所有/开头的请求都用uwsgi协议转发给127.0.0.1:8000的服务,比http协议更快
            # 或者用socket套接字链接更快
            # uwsgi_pass unix:/run/uwsgi/{projectName}.sock;
            uwsgi_pass 127.0.0.1:8000;
            #    如果需要用uwsgi协议,必须include一下uwsgi相关参数,固定写法,将所有参数转到uwsgi下
            # 根据自己服务器nginx安装位置引入uwsgi_params文件。
            include /www/server/nginx/conf/uwsgi_params;
    }
    
}

配置保存后可以用 sudo nginx -t 检查配置项是否有误
image.png
nginx内监听80即可,但请求需要转发对接uwsgi监听端口,uwsgi_pass端口号必须与uwsgi.ini配置项内端口号相同。

常见问题

502:nginx反向代理成功,但是uwsgi没有启动或配置错误
404:路由不在Django路由中,或nginx配置错误,未注释try_files。
静态文件丢失:让nginx管理静态文件,加载效率比Django快很多。

处理静态文件丢失问题

  1. 在Django项目目录内兴建一个文件夹用于存放所有静态文件,如/home/项目名/项目名_static
  2. 在Django的settings.py中增加一个配置项“STATIC_ROOT = '/home/项目名/项目名_static/static'”
  3. 进入Django项目目录下,执行python3 manage.py collectstatic命令,Django会将所有静态文件统一规划到该配置目录内。
  4. 进入nginx配置加入以下内容。

    #    固定格式
    server
    {
     
     #    listen 80;
     #    server_name _;
     #    index index.html;
     #    root /www/server/nginx/html;
     ......
     
     #    location后面的/相当于路由
     location / {
             #该项一定要禁,否则nginx会扫描整个文件目录,匹配路由中对应文件给用户。
             #try_files $uri $uri/ =404;
         
             #    所有/开头的请求都用uwsgi协议转发给127.0.0.1:8000的服务,比http协议更快
             # 或者用socket套接字链接更快
             # uwsgi_pass unix:/run/uwsgi/{projectName}.sock;
             uwsgi_pass 127.0.0.1:8000;
         
             #    如果需要用uwsgi协议,必须include一下uwsgi相关参数,固定写法,将所有参数转到uwsgi下
             # 根据自己服务器nginx安装位置引入uwsgi_params文件。
             include /www/server/nginx/conf/uwsgi_params;
     }
     #    location后面的/static相当于路由
     #    告诉nginx,‘/static’下的网络请求统一到’/home/项目名/项目名_static‘目录下寻找相关文件
     location /static {
             root /home/项目名/项目名_static;
     }
     
    }

    美化404页面

    当Django遇到客户随机输入的地址请求后如果没有对应网页给用户显示,则可以在模板文件夹内添加文件名为404.html的模板文件,当触发404时该网页会被显示给用户。该模板只在“DEBUG = False”时才起作用。

作者: 猪皮怪

2024 © esia.asia 17 ms