Nginx

什么是Nginx

Nginx是一个开源且高性能、可靠的Http web服务、代理服务
开源:体现在直接获取Nginx的源代码
高性能:体现在支持海量的并发
高可靠:服务稳定

为什么选择Nginx

  1. 高性能、高并发
    体现在单一时间如果有大量请求,nginx比其他的web服务器响应的更快
  2. 高扩展性
    功能模块化,
  3. 高可靠性
    普通的web服务器,几周就要重启一次,而nginx一年内宕机的时间是以秒计算的
  4. 热部署
    不停止服务的情况下升级nginx。(就像游戏的热更新)
  5. 应用广泛
    Nginx技术成熟,具备企业常用的功能,如代理,代理缓存,负载均衡,静态资源,动静分离,https,lnmp,lnmt等等
  6. 网络模型
    nginx使用的是epool模型,apache使用的是select模型
    select: 用户发起请求,会进行进行全局扫描,然后确定请求的目标
    epool:用户发起请求,直接确定请求的目标。

Nginx的组成

  1. 第一部分:nginx 的二进制可执行文件
  2. 第二部分:nginx.conf 配置文件

前两部分定义了nginx处理请求的方式

  1. 第三部分:access.log记录nginx处理过的每一条信息
  2. 第四部分:error.log 查看异常问题

Nginx的安装

Nginx官网
必须安装官方版本

  1. 进入官网进去官网
  2. 下滑到底部选择稳定版的安装方式下滑到底部选择稳定版的安装方式
  3. 选择自己的操作系统在这里插入图片描述
  4. 在指定的目录中创建nginx.repo的文件,将框内的复制粘贴进去。(其实就是创建一个nginx的yum仓库)在这里插入图片描述
  5. yum install nginx 不要用-y,确认源是来自nginx官方仓库
  6. systemctl enable nginx
  7. systemctl start nginx
  8. 如果本机开启了httpd,需要关闭。

Nginx配置文件介绍

  1. 默认的显示页面所在目录

vim /usr/share/nginx/html/index.html

  1. 查看nginx软件包含的内容以及各个部分的作用
    在这里插入图片描述
  2. nginx配置文件内容详解
cat /etc/nginx/nginx.conf  配置文件所在目录

配置文件分三个部分,每个部分以 { } 来标记开始和结束。
第一部分 :核心模块

user  nginx;  用户
worker_processes  auto;   运行的worker进程数量(核心数就是cpu数),auto就是有几个就启动几个)

error_log  /var/log/nginx/error.log notice; 错误日志存放目录
pid        /var/run/nginx.pid;   启动后的进程id

第二部分:事件模块

events {
    worker_connections  1024; 每个worker进程支持的最大连接数
    use epoll  事件驱动模型,因为是默认所以此处省略
}

第三部分:内核模块 (调用的是conf.d中的所有.conf文件)

http { 
协议
    include       /etc/nginx/mime.types; 
   包含的资源类型
    default_type  application/octet-stream;
   当nginx无法识别请求的资源类型,会以下载的方式进行传输
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    长连接的保持和超时时间

    #gzip  on;
    是否压缩

    include /etc/nginx/conf.d/*.conf;
    包含conf.d下的所有配置文件
}
  1. conf.d下有一个默认的配置文件default.conf,里面是编写.conf文件的帮助说明,在conf.d文件中可以创建多个不同的.conf的配置文件,这个文件决定了网页的端口,域名,资源所在位置。首先会先请求指定目录内文件的内容,如果没有则默认返还index.html里的内容,index.html决定了网页最终呈现的样子。

以域名的方式创建web页面

文件所在位置:/etc/nginx/conf.d

文件配置,注意每个句子结束一定要以分号;结尾。
server {
服务器
            listen 80;
            响应的端口
            server_name game.chris.com;
            响应的域名
          
            location / {
    / 通用匹配的符号,如果不指定就是全局匹配,后面会有详细解释
                     root /code;
                     目录
                     index index.html;
                     默认返还该文件内的信息
            }
}
:wq保存
nginx -t 检查语法
systemctl reload nginx重启加载配置
前往指定目录放入代码,或其他数据。
在浏览器输入域名,检查效果。
如没有域名,可以找到C:\Windows\System32\drivers\etc下的host文件,
将域名和ip添加到文件中,ip在前,域名在后。

通过域名的方式在一台服务器运行多个业务

只需要在/etc/nginx/conf.d/目录中创建多个不同的域名的.conf文件即可。步骤参考

以域名的方式创建web页面

.conf文件里的条件设置

如果需要条件作用于全局将设置写在第一个的域名下面,如果只需要作用于单个页面,写在location下面

目录索引(浏览设置)

  1. autoindex on | off
    自动识别返还index.html,默认是off,需要主动设置
  2. autoindex_exact_size on | off
    自动识别转换目录中的文件大小,默认是off,需要主动开启
  3. autoindex_localtime on | off
    以本地时间为标准显示目录中文件的创建时间
  4. charset utf-8;
    设定字符集,防止中文乱码

访问的控制(权限设置)

1. 基于IP的控制设置

allow 允许指定ip访问
deny 拒绝指定ip访问

两者的排序是有影响的,如果先指定允许,那么只有允许的ip可以访问,非指定ip不符合第一条规定则会跳往第二条,可是第二条规定是拒绝所有人,所以,会影响正常访问。
所以一般会先指定拒绝访问的ip,再允许除指定ip以外的访问。
如下:

deby 172.16.1.1/32;
allow all

2. 基于密码的身份验证

下载:
yum install httpd-tools

使用
htpasswd -c -b /etc/nginx/passwd_file chris 123456
解析:-c是创建一个新的文件
     -b在命令行中直接输入用户名和密码
     指定文件创建的目录后 输入 用户名 和 自定义密码   回车
     然后在server文件中建议一个新的
     locatinon /nginx {
              auth_basic "hello";
              自定义一个字符串
              auth_basic_user_file "通过htppasswd创建的文件目录";
     
     }

3.限流限速

限定同一个用户同一时间能够发起的http请求,或者限制某个用户的下载速度。
limit 必须放在http层

http {
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
zone是区域名称  速率是每秒1个
server {
        limit_req zone=perip burst=5 nodelay;
         5是延迟处理,多了就报错
http{
limit_conn_zone $binary_remote_addr zone=addr:10m;
server{
     limit_conn addr 1;
     并发连接数为1
limit_rate_after 300m;
limit_rate 100k;
300兆以后将下载速度降至100k每秒

Nginx状态监控

不用创建目录,是一个监控端口,可以单独建立在一个location下面,单独设置即可。

  • stub_status 监控设置
    Active connections: 1 当前活动的连接数
    server accepts:当前建立的tcp连接数
    handled:已经处理 的连接数
    requests:一共的请求数
    reading:当前读取的请求数
    writing:响应的请求数
    waiting:等待等待的空闲客户端连接数

Nginx location(定位)

locationg_官网教程
location 是用来控制访问网站的uri路径(文件在所在目录)的。

location @name 
@ 是内部重定向跳转
location /
通用匹配                     优先级5
 location ~*
 不区分大小写的匹配            优先级4
 location ~
 区分大小写                   优先级3
 location ^~
 以某个字符串开头              优先级2
 location =          
 精确匹配                     优先级1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值