[Django]学习笔记3:Nginx+uwsgi学习

98 阅读3分钟

Nginx安装及相关命令:

### Ubuntu下nginx相关命令
 
# 安装nginx
sudo apt install nginx -y
 
# nginx文件相关存放位置
# /usr/sbin/nginx:主程序
# /etc/nginx:存放配置文件
# /usr/share/nginx:存放静态文件
# /var/log/nginx:存放日志
 
#查看Nginx版本:
nginx -v

#查看配置文件是否ok,查看配置文件目录:
nginx -t
#如果配置文件有问题的话会显示failed,如果没得问题的话,会显示successful

# nginx服务命令
service nginx {start|stop|restart|reload|forcereload|status|configtest|rotate|upgrade}
 
# 通过浏览器访问页面
# 访问地址:http://xxx.xxx.xxx.xxx/
 
# 查看日志
tail -f /var/log/nginx/access.log

Nginx配置:

按照功能划分,我们通常将nginx配置文件分为三大块,全局块,events块,http块。

第一部分:全局块

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

这里主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

第二部分:events 块:

events {
    worker_connections 1024;
}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

第三部分:http块:

内容太多,略

http {
    server {
        }
}

注意:http是一个大块,里面也可以包括很多小块,比如http全局块,server块等。

http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

而http块中的server块则相当于一个虚拟主机,一个http块可以拥有多个server块。

server块又包括全局server块,和location块

全局server块主要包括了本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location块则用来对虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

比如,对/usr相关的请求交给8080来处理,/admin则较给8081处理。

nginx 实战

nginx配置反向代理:

修改我们的配置文件nginx.conf里面的server块:

    server {
            #设置我们nginx监听端口为8888
            listen 8888 ;
            #listen 8888 default_server;
            #listen [::]:8888 default_server;
            
            #root:指定web的家目录,在定义location的时候,文件的绝对路径等于root+location,
            root /var/www/html;
      
            server_name localhost;

            location / {
                    #需要代理的服务器地址
                    proxy_pass http://127.0.0.1:8080;
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ =404;
            }

    }

配置uwsgi ini文件:

; 监听的端口
http = 127.0.0.1:8080

启动uwsgi和nginx,然后在浏览器中输入:服务器ip:8888 发现浏览器显示出来了8080端口django的欢迎界面,从而实现了隐藏真实服务器地址这样一个反向代理的要求。
更多参考

其他:root与alias

root

    location /about {
        root html/aaa.com;    #必须要在html/aaa.com目录下创建一个about目录才可以访问,否则报错
        index index.html index.htm;
    }

alias

    location /about {           #使用alias的时候uri后面如果加了斜杠则下面的路径配置必须加斜杠,否则403
        alias html/aaa.com;     #当访问about的时候,会显示alias定义的html/aaa.com里面的内容
        index index.html index.htm;
    }