0
点赞
收藏
分享

微信扫一扫

微深节能 堆取料机动作综合检测系统 格雷母线

耳一文 2024-08-21 阅读 3

一:nginx概述

1.1 nginx是什么

1:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日。
2:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
3:Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
4:Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。

1.2:为什么使用nginx

1.3 nginx功能介绍

1.4 基础特性

1.5 web服务相关功能

二: nginx架构和进程

2.1 主要特性

  • 高并发处理能力:Nginx 使用异步、非阻塞事件驱动架构,能够高效地处理大量并发连接。
  • 低资源消耗:相对于传统的进程或线程模型,Nginx 使用更少的内存和 CPU 资源。
  • 模块化设计:Nginx 的功能通过模块实现,用户可以根据需求加载不同的模块。
  • 高可扩展性:通过第三方模块和 Lua 脚本,Nginx 能够轻松扩展其功能。
  • 丰富的功能:支持 HTTP/2、反向代理、负载均衡、缓存、SSL/TLS、WebSocket 等

2.2 核心架构

Nginx 的核心架构设计是其高性能和高可用性的关键。核心架构包括模块化设计、事件驱动模型、Master-Worker 进程模型和高效的请求处理流程。

2.3 nginx进程结构

2.4 nginx进程角色

2.4 nginx缓存简介

      Nginx在文件系统上使用分层数据存储实现缓存。缓存主键可配置,并且可使用不同特定请求参数来控制缓存内容。缓存主键和元数据存储在共享内存段中,缓存加载进程、缓存管理进程和worker进程都能访问。目前不支持在内存中缓存文件,但可以用操作系统的虚拟文件系统机制进行优化。每个缓存的响应存储到文件系统上的不同文件,Nginx配置指令控制存储的层级(分几级和命名方式)。如果响应需要缓存到缓存目录,就从URL的MD5哈希值中获取缓存的路径和文件名。

  将响应内容缓存到磁盘的过程如下:当nginx从后端服务器读取响应时,响应内容先写到缓存目录之外的一个临时文件。nginx完成请求处理后,就将这个临时文件重命名并移到缓存目录。如果用于代理功能的临时目录位于另外一个文件系统,则临时文件会被拷贝一次,所以建议将临时目录和缓存目录放到同一个文件系统上。如果需要清除缓存目录,也可以很安全地删除文件。一些第三方扩展可以远程控制缓存内容,而且整合这些功能到主发布版的工作已经列入计划。

三 : nginx

3.1 正向反向代理

正向代理: 我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)

反向代理: 那什么是反向代理呢。比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,那我们是不是在服务器之间访问需要频繁登录,那这个时候淘宝搭建一个过渡服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器)

3.2 nginx的负载均衡

3.3 动静分离

3.4 零拷贝技术

3.4.1 什么是零拷贝

零拷贝就是上述问题的一个解决方案,通过尽量避免拷贝操作来缓解 CPU 的压力。零拷贝并没有真正做 到“0”拷贝,它更多是一种思想,很多的零拷贝技术都是基于这个思想去做的优化

3.4.2 零拷贝基础

3.4.3 零拷贝方式

该拷贝方式共进行了 2 次用户空间与内核空间的上下文切换,以及 3 次数据拷贝,但整 个拷贝过程均没有CPU 的参与,这就是零拷贝

3.5 nginx的并发处理机制

一般情况下并发处理机制有三种:多进程、多线程,与异步机制。 Nginx 对于并发的处 理同时采用了三种机制。当然,其异步机制使用的是异步非阻塞方式。

我们知道 Nginx 的进程分为两类:master 进程与 worker 进程。
master进程负责worker进程的生命周期、接收外部命令、解析Perl脚本。
worker进程用于接收和处理客户端的请求。
每个 master 进程可以生 成多个 worker 进程,所以其是多进程的。
每个 worker 进程可以同时处理多个用户请求,每 个用户请求会由一个线程来处理,所以其是多线程的。

那么,如何解释其“异步非阻塞”并发处理机制呢?
worker 进程采用的就是 epoll 多路复用机制来对后端服务器进行处理的。当后端服务器返回结果后,后端服务器就会回调 epoll 多路复用器,由多路复用器对相应的 worker 进程进行通知。此时,worker 进程就会挂起当前正在处理的事务,拿 IO 返回结果去响应客户端请求。响应完毕后,会再继续执行挂起的事务。这个过程就是“异步非阻塞”的。

四:nginx模块介绍

4.1  nginx模块

nginx高度模块化,但其模块早期不支持DSO机制;1.9.11 版本支持动态装载和卸载

4.2 模块分类

五:实验环节

 5.1 nginx的源码编译

解压1.23.0压缩包

生成文件

关闭debug模式

export PATH=$PATH:/usr/local/nginx/sbin

测试

5.2  nginx的平滑升级与回滚:基于源码编译

解压echo文件和1.26.2版本

要添加--add-moudle=/root/echo-nginx-module-0.63

[root@nginx nginx-1.26.2]# make      !!!直接make不可以install

回收work进程

测试

回滚版本

5.3  nginx命令参数

例如-V -T

5.4  nginx启动文件编写

[root@nginx sbin]# vim  /lib/systemd/system/nginx.service

5.5  nginx全局参数优化

修改配置文件

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

[root@nginx ~]# vim /etc/security/limits.conf

下载httpd-tools测试

[root@nginx ~]# dnf install httpd-tools -y

 5.6 nginx下的root和alias

建立文件并编辑

 5.7 nginx的用户认证

5.8 自定义日志

[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf

[root@nginx ~]# mkdir /var/log/timinglee.org

[root@nginx ~]# nginx -s reload

 5.9 nginx的文件检测

[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf
server {
     listen 80;
     server_name www.timinglee.org;
     root /data/web/html;
     index index.html;
     error_log /var/log/timinglee.org/error.log;
     access_log /var/log/timinglee.org/access.log;
     try_files $uri $uri.html $uri/index.html /error/default.html;
 

[root@nginx ~]# mkdir /data/web/html
[root@nginx ~]# echo error default > /data/web/html/error/default.html

5.10 nginx中的长连接管理

[root@nginx ~]# dnf install telnet -y    ###安装长连接测试工具
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf


修改可看时间为60

5.11 下载服务器的设定以及优化

[root@nginx ~]# mkdir /data/web/download
[root@nginx ~]# dd if=/dev/zero of=/data/web/download/leefile bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB,100 MiB)已复制,0.176053 s,596 MB/s

显示本地时间

显示文件粗略大小

5.12 nginx状态页

[root@nginx conf.d]# vim status.conf

[root@nginx conf.d]# nginx -s reload

5.13 源码编译php

重新编译nginx1.26

[root@nginx nginx-1.26.2]# make && make install

编译php

[root@nginx ~]# tar zxf php-8.3.9.tar.gz

[root@Nginx ~]# yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel oniguruma-devel(需要在阿里云找)

[root@nginx php-8.3.9]# make && make install

编译成功!!!这个是真的慢啊(OvO)

5.14 php配置方法

[root@nginx etc]# cd php-fpm.d/
[root@nginx php-fpm.d]#  cp www.conf.default www.conf -p
[root@nginx php-fpm.d]# cd /root/php-8.3.9/
[root@nginx php-8.3.9]# cp php.ini-production /usr/local/php/etc/php.ini
更改时区

[root@nginx etc]# vim php.ini

生成启动脚本

[root@nginx etc]# cd /root/php-8.3.9/
[root@nginx php-8.3.9]# cd sapi/
[root@nginx sapi]# cd fpm/
[root@nginx fpm]# cp php-fpm.service /lib/systemd/system/
[root@nginx fpm]# pwd
/root/php-8.3.9/sapi/fpm
[root@nginx fpm]# vim /lib/systemd/system/php-fpm.service

将ProtectSystem注释掉

更改端口

[root@nginx php]# ls
bin  etc  include  lib  php  sbin  var
[root@nginx php]# cd etc/php-fpm.d/
[root@nginx php-fpm.d]# ls
www.conf  www.conf.default
[root@nginx php-fpm.d]# vim www.conf

[root@nginx php-fpm.d]# systemctl restart php-fpm.service

5.15 nginx和php的整合

[root@nginx bin]# source  ~/.bash_profile

[root@nginx nginx]# mkdir conf.d
[root@nginx nginx]# vim conf/nginx.conf

成功出现php页面

举报

相关推荐

0 条评论