nginx

发布于:2024-12-18 ⋅ 阅读:(187) ⋅ 点赞:(0)

nginx网站服务

nginx介绍

1、支持高并发,轻量级的一个web服务软件(web服务器以及反向代理服务器)

2、稳定性高,而且系统的资源消耗率相对较低,比apache低得多(能够处理大量并发连接而不占用过多的系统资源,称为可以处理高流量网站的理想选择

对http的高并发处理能力高,单台物理服务器可以支持30000-50000个并发

一般来说,在工作中,单台的并发一般在20000左右

nginx的功能介绍

1、主要功能就是处理静态页面,文本,图片等等

2、动态内容处理能力较差,一般是把这种动态的请求转发到中间件(PHP,PYthon),由中间件转发到后端,对后端服务器的健康检查仅支持通过端口进行

什么是代理

3、正向代理和反向代理

正向代理:用代理服务器解析目标地址,通过一个代理的地址,访问其他的web页面,客户端是知道通过代理服务器访问的目标地址

反向代理:也是通过代理地址访问,但是客户端并不知道流量转发到了哪一台后端服务器

                  流量转发是根据算法把流量转发到后台服务器

反向代理=====负载均衡

4、支持ssl/tls 加密支持 支持http协议

5、支持虚拟主机,在一个nginx的配置当中,可以做多个域名

6、nginx自带缓存机制,可以缓存静态文件

7、自带日志记录,但是nginx没有日志分割功能(所有都放在一个里面),记录的是nginx自己的业务日志,如果是程序启动停止,程序出错的日志不包含在内

同步异步

同步:在互联网中,处理请求的方式,一个服务完成需要其他服务作为依赖时,只有等待被依赖的服务完成后,才算完成,需要整个的一个周期,是一个可靠的序列,要么都成功要么都失败

服务的状态需要严谨的保持一致

异步:不需要等待,下一个继续,一个服务的完成需要依赖其他的服务,只是通知其他依赖服务开始执行,不需要等待依赖服务的执行结果,被依赖的服务执行结果也无法确定,是一个不可靠的序列

nginx快的原因,使用的是异步的处理方式

同步的定义和特点

  • 定义:同步是指程序按照顺序执行,每一步的执行结果必须等待上一步完成之后才能进行下一步。
  • 特点
    • 需要等待操作的结果返回。
    • 执行过程是线性的,一个任务完成后才能开始下一个任务。
    • 简单直观,易于理解和实现。
    • 在处理耗时任务时可能会导致系统资源的空闲等待,降低效率。

异步的定义和特点

  • 定义:异步是指程序的执行不需要等待某个操作的结果返回,而是可以继续执行后续的代码。
  • 特点
    • 不需要等待操作的结果返回。
    • 执行过程可以是并发的,可以同时处理多个任务。
    • 通常涉及回调、事件监听或消息队列等机制。
    • 可以提高程序的响应性和并发性,尤其是在涉及大量输入输出操作或网络通信时非常有用。

阻塞和非阻塞

阻塞:在调用结果返回之前,当前的线程会被挂起(挂起的状态被称为阻塞),一直等到返回结果,这个线程才会继续运行,在这个期间是不能够执行其他任务的。

非阻塞:不需要等待调用的结果,如果不能立刻得到结果,也不会阻塞当前的线程,而是立刻返回。

nginx的工作方式:异步非阻塞

定义

  • 异步:异步是指程序的执行不需要等待某个操作的结果返回,而是可以继续执行后续的代码。
  • 非阻塞:非阻塞是指程序在等待某个操作的结果时,不会被挂起,而是可以继续执行其他任务。

nginx的工作流程

nginx服务开启nginx程序,nginx程序会分出主进程和子进程,子进程的数量主要由配置文件中的worker_processes指令来决定,主进程读取并且校验配置文件,如果配置文件不出错,就让子进程来接受并且响应客户端的请求,如果修改配置文件,重启(程序)保存之后,主进程会先让子进程处理完正在处理的请求,随后杀死子进程,在重启之后分出新的主进程和子进程。

http://192.168.44.101/index.html,子进程会返回/usr/local/nginx/html/index.html,因为root会设定根目录,默认为/usr/local/nginx/html/index.html。

nginx的目录结构

conf:保存所有nginx配置的文件,其中nginx.conf是主核心配置件,其他的配置文件主要是nginx的相关功能

logs:存放nginx日志的目录 access.log记住访问nginx的日志 error.记录访问的失败

sbin:nginx的二进制启动的脚本,一般动用系统控制命令

nginx -t 检测配置文件的语法是否正确

nginx -v 检测nginx的版本

nginx -s stop start restart  reload 信号,传递一个信号让内核处理(也可以对程序进行控制)

html:保存的是nginx访问的web页面,这个目录可以修改,文件名一般是index.html

nginx的配置文件详解

全局模块:对全局生效

events:主要是配置nginx服务器的并发处理数

http :配置代理、缓存、日志以及第三方模块(自定义的对http请求进行处理)

-------- server:配置虚拟主机的参数,一个http里面可以有多个server 

 ---------- location: 用来匹配uri(是一个目录)

一个server里面可以有多个location 

location的匹配语法

root 是拼接访问,把路径和uri合并

alias 绝对路径,工作目录必须要包含匹配的uri

sendfile on的过程

直接向网络接口发送一个文件描述符和网络接口信息,让网络接口直接读取相关文件,省去了复制的一个过程。

worker_processes 1;  (子进程数量,通常物理处理器的核数对应1到2个子进程)

events {

 worker_ connections 1024 (一个子进程对应的连接数,默认是1024) 

(linux默认的连接数是1024,需要修改配置文件/etc/security/limits.conf

nproc 系统能处理的进程数 

nofile 系统能打开文件的数量

必须重启才能生效

ulimit -n 临时生效 -a查看只修改了打开文件的数量

}

http

 include(可以引用其他配置文件) mime.types; (请求头告诉客户端发送的什么文件,让主机可以识别,XX/XX(性质和格式))

default_type application/octet-stream;(如果文件的类型不在配置文件里,用这个格式发送给客户端)

sendfile on;赋值零拷贝(免除了拷贝的过程,减少了调度和复制的过程)

keepalive_timeout 65;  (数据传输完毕保持连接的时间)

}

server(在Nginx中,多个域名可以共用同一个端口(如80端口),这是因为Nginx使用了虚拟主机的概念。虚拟主机允许在同一个服务器上托管多个域名,并且每个域名可以独立地处理请求?){

}

#主机

server {

       listen  80;

       server_name localhost;(#配置域名或者主机名)

       chartset utf-8(指定页面解码的字符集,utf-8可以使用中文解码)

# http://atgui.com/xxoo/index.html(uri)

location / {

     root html;

     index index.html index.html;

}

error_page 500 502 503 504 /50x.html;

location =/50x.html(定义错误页面跳转的路径){

       root html;

}

}

实验

如何统计nginx的访问状态

基于授权的访问控制

apt -y install apache2

htpasswd -c /usr/local/nginx/passwd.db cwq 设置当前系统用户登陆页面的密码

chown nginx.nginx /usr/local/nginx/passwd.db cwq

chmod 400 /usr/local/nginx/passwd.db 必须是400

auth_basic_user_file /usr/local/nginx/passwd.db;

拒绝指定ip地址的访问

配置虚拟主机的域名

vim nginx.conf 

server {

sever_name www.pikaqiu.com

charset utf-8

access_log /usr/local/nginx/logs/xy104.com.access.log

}

systemctl restart nginx

vim /etc/hosts

192.168.213.51 www.pikaqiu.com 非注册域名需要在/etc/hosts文件中进行配置

基于域名

一个ip可以匹配多个域名(一个nginx可以做多个域名映射)

基于IP地址

server {

listen 192.168.213.69:80

server_name www.pikaqiu.com

}

ifconfig ens33:1 192.168.213.69/80

基于端口号

改端口号即可

(一个http里的站点)


网站公告

今日签到

点亮在社区的每一天
去签到