nginx基础学习笔记

nginx特点

nginx是基于异步框架的轻量级/高性能的web服务器,也可作为反向代理服务器/缓存服务器/电子邮件代理服务器等。

  • 优点:
    高并发量:基于epoll/kqueue模型开发,支持高并发量,官方说其支持高达5W并发连接数的响应。
    内存消耗少:善于处理静态文件,相较于其他web(如apache),占用更少的内存及资源。
    简单稳定:配置简单(一个conf文件),运行简单(NGINX命令)
    模块化程度高:功能模块插件化设计,可以自由配置相应的功能。
    支持Rwrite重写规则:能够根据域名、URL等请求关键点,实现定制化的高质量分发。
    低成本:NGINX的负载均衡功能强大而且开源,相较于几十万的硬件负载均衡器成本低。
    支持多系统:NGINX代码完全用C语言编写,可以在各系统上编译使用。
  • 缺点:
    动态处理能力差:NGINX善于处理静态文件,但是处理动态页面相较于apache之类重量级web软件能力稍逊。
    rewrite弱:虽然NGINX支持rewrite功能,但相比apache等较弱。

nginx命令

# 启动停止命令,三种方式,注意用哪种方式启动,就用哪种方法停止。
systemctl start|stop|reload|status|... nginx
/etc/init.d/nginx start|stop|reload|status|...
/usr/sbin/nginx -s start|stop|reload|status|...

# 
nginx -V  # 查看nginx所有配置信息
nginx -v  # 查看nginx版本信息

# 检查配置文件语法
nginx -t [-c xxx.conf]

nginx配置

nginx 相关目录

这些路径是使用系统命令下载nginx的时候默认所在的路径,路径可以自定义。

工作目录:/etc/nginx
执行文件:/usr/sbin/nginx
日志目录:/var/log/nginx
启动文件:/etc/init.d/nginx
web目录:/var/www/html/ 

配置文件结构

默认配置文件:/etc/nginx/nginx.conf

文件结构:
    全局配置段
    http配置段
        server配置段  # 项目或应用
            location配置段  # url配置

全局配置段

user : 工作用户
worker_process : 工作进程数(一般情况下设置和机器cpu核数一样)
pid : nginx启动之后的服务的进程id。/run/nginx.pid
event : 和worker_process有关。
      worker_connections每个进程的最大连接数
      use: 使用的内核模型,一般选择epoll。

http配置段

部分常见配置项:
include mime.types;   # 文件拓展名与文件类型映射表
default_type application/octet-stream  # 默认文件类型
sendfile on;  # 开启高效文件传输模式
autoindex on;  # 开启目录列表访问,适合下载服务器,默认关闭
tcp_nopush on;  # 防止网络阻塞
tcp_nodelay on;  # 防止网络阻塞
keepalive_timeout 120;  # 长链接超时时间,单位是秒
gzip on;  # 开启gzip压缩输出
server
location

server、location配置段

server{
    listen 80;  # 此server监听的ip和port端口号,当ip和port匹配时才进行下一步匹配。listen有多种ip和port的组合方式。
    # listen 601;  # 指定端口,默认ip0.0.0.0.   0.0.0.0:601
    # listen 192.168.0.20:601;  # 指定ip和port
    # listen 192.168.0.20;  # 指定ip,默认port为80   192.168.0.20:80

    root /var/www/html;  # 静态html所在目录
    index index.html [app.index.html];  # 指定首页,可以配置多个,会依次查找。
    # root和index也可以写在Location中。
    
    # root配合index使用。
    location / {
        root /var/www/html;
        index index.html;
    }
    # alias配合index使用。
    # location /test {
    #     alias /var/www/html;
    #     index index.html;
    # }
    # 需注意:如果location匹配 / 路径的时候,使用root即可。如果匹配 /test 这种路径时,需要使用alias,如果还使用root,/test 会拼接到root指定的路径中去:如/var/www/html/test。
    
    server_name www.aaa.com;  # 配置之后可以通过域名访问。当有多个server监听同一个Port时,通过此参数标识区分。
}

location配置段匹配优先级关系:精确匹配 > location完整路径 > 优先匹配 > 正则匹配 > Location部分路径 > 通用匹配

类型 含义 匹配方式 优先级 样式
=/路径 精确匹配 前缀 1 location = /image {}
^~ 优先匹配 前缀 2 location ^~/page {}
~ 正则(大小写敏感) 正则符号 3 location ~.(jpe?g)$ {}
~* 正则(大小写不敏感) 正则符号 3 location ~*.(jpe?g)$ {}
/ 通用匹配 前缀 4 location / {}
<路径> 前缀匹配 前缀 . location /index {}

try_files 的使用:进行异常处理或临时跳转(仅在资源内部)

server {
    listen 80;
    location / {
        root /var/www/html;
        index index.html;
        try_files $uri $uri/ =404;  # 如果匹配到location后可以找到响应的资源,则正常返回,否则返回404
        # try_files $uri @xxxxname;  # 临时跳转
    }
    location @xxxxname {
        root /var/www/html;
        index index12.html;
    }
}

location临时跳转:302跳转,可以跳转至内部或外部资源。

server {
    listen 80;
    location / {
        return 302 http://www.baidu.com;  # 外部跳转
        # return 302 /login;  # 内部跳转
    }
    location /login {
        return 400;
    }
}

location 访问控制

server {
    listen 80;
    location / {
        deny 192.168.0.20;
        allow 192.168.0.22;
        allow 192.168.0.0/16;
        deny all;
    }
}

location目录列表(多用于下载服务器时使用)

server {
    listen 80;
    location / {
        root /etc/medim
        autoindex on;
        # autoindex_exact_size off;  # 设定索引时文件的大小单位,默认为on 开启
        # autoindex_localtime on;  # 文件信息时间显示为本地时间,默认为off。
    }
}

反向代理配置

# nginx服务器192.168.0.10
server {
    listen 6001;
    location / {
          proxy_pass  http://192.168.0.20:8001;
    }
}

# 真实服务器192.168.0.20
server {
    listen 8001;
    location / {
          root /var/www/html;
          index index12.html;
    }
}

负载均衡配置

# 负载均衡配置
upstream backend  {
    # server backend1.example.com weight=5;
    # server backend2.example.com:8080;
    # server unix:/tmp/backend3;
    server 192.168.0.20:8001;
    server 192.168.0.21:8001;
    
    # 常见的调度算法有三种:
    # 1.默认的转发规则,轮询
    # server 192.168.0.20:8001;
    # server 192.168.0.21:8001;
    # 2.加权轮询
    # server 192.168.0.20:8001 weight=3;
    # server 192.168.0.21:8001;
    # 3.ip_hash:请求第一次落到哪台服务器,后续请求全部由该台服务器提供。
    # ip_hash;
    # server 192.168.0.20:8001;
    # server 192.168.0.21:8001;

    # 其他常用设置
    # server 192.168.0.20:8001 down;  # 当前server不参与负载均衡
    # server 192.168.0.20:8001 backup;  # 其他机器全部down掉或满载时使用此服务
}

# nginx服务器192.168.0.10
server {
    listen 6001;
    location / {
          proxy_pass  http://backend;
    }
}
  
# 真实服务器192.168.0.20
server {
    listen 8001;
    location / {
          root /var/www/html;
          index index12.html;
    }
}

# 真实服务器192.168.0.21
server {
    listen 8001;
    location / {
          root /var/www/html;
          index index12.html;
    }
}

日志解析

参考文档,自定义日志格式。

posted @ 2021-02-21 18:40  dsprain  阅读(112)  评论(0)    收藏  举报