Apache和nginx!!!!

news2024/9/21 20:33:35
⼀、Apache 概念
1、概述
最早的 web 服务程序,基于 http 协议提供⽹⻚浏览服务。
2、特点
模块化设置、开放源代码、跨平台应⽤、⽀持多种 web 编程语
⾔、运⾏稳定。
3、⼯作模式
(1)Prefork:使⽤进程处理请求,在该模式中⽐较消耗内存,但稳
定性⾼,如某个进程出现问题,不会影响其他请求。
(2)Worker:属于多进程模式,每个进程⽣成多个进程;在该模式下
消耗的资源⽐较⼩,适合⾼并发请求,但稳定性没有 Prefork 模式稳
定。
(3)Event:该模式与 Worker 模式较为相似,不同之处在于在该模
式下可以解决keepalive ⻓连接时占⽤线程资源导致浪费的问题。(4)keep-alive ⻓连接:TCP连接在发送后将仍然保持打开状态,
于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为
每个请求建⽴新连接所需的时间,还节约了带宽。实现⻓连接要客户
端和服务端都⽀持⻓连接。
⼆、搭建 apache 服务器
1、安装并设置防⽕墙序
[root@server2 ~]# yum -y install httpd
上次元数据过期检查:6:39:47 前,执⾏于 2023年08⽉31⽇ 星
期四 15时10分42秒。
依赖关系解决。
===================================================
===========
软件包 架构 版本 仓库
⼤⼩
===================================================
===========
安装:
 httpd x86_64 2.4.37-
51.module+el8.7.0+1059+126e9251
......省略部分安装信息......
[root@server2 ~]# systemctl start httpd #启
动apache
[root@server2 ~]# netstat -anpt | grep httpd #查
看端⼝确认apache已启⽤
tcp6 0 0 :::80 :::* 
 LISTEN 3512/httpd 
[root@server2 ~]# systemctl status
firewalld.service #查看防⽕墙是否启⽤,若启⽤则设置
apache服务可通⾏规则
● firewalld.service - firewalld - dynamic firewall
daemon
 Loaded: loaded
(/usr/lib/systemd/system/firewalld.service;>
 Active: active (running) since Thu 2023-08-31
21:49:59 CST>
......省略部分状态信息......
[root@server2 ~]# firewall-cmd --permanent --addservice=http #设置防⽕墙放⾏apache
success
[root@server2 ~]# firewall-cmd --reload #重载防
⽕墙规则
success
[root@server2 ~]# firewall-cmd --list-all #查看当
前区域下防⽕墙所有规则
public (active)
 target: default
 icmp-block-inversion: no
 interfaces: ens32 ens34 ens35
 sources:
 services: cockpit dhcpv6-client http ssh 
#apache(http)已放⾏
 ports: 873/tcp
 protocols:
 forward: no
 masquerade: no
 forward-ports:
 source-ports:
 icmp-blocks:
 rich rules:
2、apache 配置⽂件
yum 安装的 apache,配置⽂件在 /etc/httpd/conf/httpd.conf
如果是编译安装的 apache,那么配置⽂件在⾃⼰编译安装的安
装⽬录下
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
37 # Listen: Allows you to bind Apache to specific
IP addresses and/or
38 # ports, instead of the default. See also the
<VirtualHost>
39 # directive.
40 #
41 # Change this to Listen on specific IP addresses
as shown below to
42 # prevent Apache from glomming onto all bound IP
addresses.
43 #
44 #Listen 12.34.56.78:80
45 Listen 80 #默认的httpd监听端⼝,可在下⾯添加其他⾃
设端⼝
46
47 #
48 # Dynamic Shared Object (DSO) Support
......省略部分内容
92 # ServerName gives the name and port that the
server uses to identify itself.
93 # This can often be determined automatically,
but we recom mend you specify
94 # it explicitly to prevent problems during
startup.
95 #
96 # If your host doesn't have a registered DNS
name, enter i ts IP address here.
97 #
98 ServerName www.example.com:80 #指定httpd服务域
名和该域名的端⼝,可以⼿动修改其他域名
99
100 #
101 # Deny access to the entirety of your server's
filesystem. You must
3、apache 索引⽂件
在⼀般的前段服务器中http nginx tomcat,在没有指定⽂件路径的时
候,默认先访问资源⽂件夹中的index.xxx
./html/index.html
httpd 使⽤ yum 安装时,默认的站html⽂件在
/var/www/html/index.html,如果 index.html ⽂件不存在,需要
⼿动创建
在⽹站⽅⾯,index通常是指主⽬录的意思,index.html是⽬录下
默认打开的⻚⾯。
⽐如,⽹站的域名是www.abc.com,如果设置了 index.html 是
默认主⻚,那么打开 http://www.abc.com 和打开⻚⾯ http://ww
w.abc.com/index.html 就是⼀样的。他们打开的都是⽹站⾸⻚,
因为index.html是⽹站默认的主⻚。
在 index.html 写⼊如下内容,可以让主⻚显示⼀个圆形,圆⼼处
显示⽂字“这就是主⻚“
[root@server2 ~]# vim /var/www/html/index.html
<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>ssjie's page</title>
 <style type="text/css">
 .bigMom{
 margin:0 auto;
 width:600px; 
#圆的半径宽度
 height:600px; 
#圆的半径⾼度
 line-height:600px; 
#⾏间距
 text-align:center; 
#⽂字位置:居中
 color:black; 
#⽂字颜⾊:⿊⾊
 border-radius:50%; 
#圆⻆率,50%是圆
 backgroundcolor:cyan; #圆的颜⾊:⻘⾊
 }
 </style>
 </head>
 <body>
 <div class="bigMom">
 欢迎来到主⻚!
 </div>
 </body>
</html>
:wq #保存并退出
[root@server2 ~]# systemctl reload httpd #重载配
置单

4、服务器访问测试
浏览器内输⼊搭建好的 httpd 服务器 IP 地址或域名(当前服务
器地址为 192.168.33.110)
5、IP 不同,域名相同的虚拟主机
(1)修改主配置
设置 IP 相同,域名不同的虚拟主机,配置⽂件在
/etc/httpd/conf/httpd.conf
.htaccess ⽂件:可以实现,⽂件夹密码保护、⽤户⾃动重定
向、⾃定义错误⻚⾯、改变你的⽂件扩展名、封禁特定IP地址的
⽤户、只允许特定IP地址的⽤户、禁⽌⽬录列表,以及使⽤其他
⽂件作为index⽂件等⼀些功能。
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
45 Listen 80
46
47 ServerName www.yh666.com:80 #添加
如下内容,域名⾃起,IP地址为⾃⼰的主机
48
49 NameVirtualHost 192.168.33.110
50 <VirtualHost 192.168.33.110>
51 DocumentRoot /var/www/html/yang #标明
索引⽂件路径,所以还需⾃⼰在该路径创建新的索引⽂件
52 ServerName www.yh666.com #域名
⾃起
53 <directory /var/www/html/yang>
54 allowoverride None #确定
是否被允许读取.htaccess⽂件内容
55 require all granted #允许
所有⽤户访问指定的(/var/www/html)⽂档或⽬录
56 </directory>
57 </virtualhost>
58
59 <virtualhost 192.168.33.110>
60 documentroot /var/www/html/hong #同上
61 servername www.hong777.com
62 <directory /var/www/html/hong>
63 allowoverride none
64 require all granted
65 </directory>
66 </virtualhost>
:wq #保存并退出
[root@server2 html]# systemctl reload httpd.service 
#重载服务
(2)创建索引⽂件
索引⽂件:index.html,⼀般为⽹站的⾸⻚。
[root@server2 ~]# cd /var/www/html/ #移动
到索引⽂件所在位置
[root@server2 html]# ls #当前
⽬录下有个索引⽂件模板
index.html
[root@server2 html]# mkdir yang #创建
与上⾯主配置对应的索引⽬录 yang
[root@server2 html]# cp -p index.html yang/ #将索
引⽂件的模板复制到新建的yang⽬录下
[root@server2 html]# mkdir hong #创建
与上⾯主配置对应的索引⽬录 hong
[root@server2 html]# cp -p index.html hong/ #复制
索引⽂件到hong⽬录下
[root@server2 ~]# vim /var/www/html/yang/index.html 
#第⼀个域名的索引⽂件
[root@server2 ~]# vim /var/www/html/hong/index.html 
#第⼆个域名的索引⽂件
#修改⽅式如下:
19 <body>
20 <div class="bigMom">
21 这⾥是www.yh666.com! 
#仅测试情况下,修改此处即可
22 </div> 
#两个⽂件都改,避免测试⽆效
23 </body>
:wq #保存并退出
(3)修改本地 hosts
本地 hosts:将⼀些常⽤的⽹址域名与其对应的IP地址建⽴⼀个
关联“数据库”,当⽤户在浏览器中输⼊⼀个需要登录的⽹址时,
系统会⾸先⾃动从Hosts⽂件中寻找对应的IP地址,⼀旦找到,
系统会⽴即打开对应⽹⻚,如果没有找到,则系统会再将⽹址提
交DNS域名解析服务器进⾏IP地址的解析。
如果该⽂件需要权限,那么右键该⽂件,进⼊“属性”,点击“安
全”选项卡,找到⾃⼰电脑的主⽤户,点编辑,然后再根据图示
给予⽤户权限。
(4)域名访问测试
浏览器输⼊配置好的域名 www.yh666.com
6、IP 相同,端⼝不同的虚拟主机
(1)修改主配置
编辑 /etc/httpd/conf/httpd.conf 配置⽂件
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
45 Listen 80
46 Listen 88 #添加⼀个88端⼝
47
48 ServerName www.yh666.com:80
49
50 NameVirtualHost 192.168.33.110
51 <VirtualHost 192.168.33.110:80>
52 DocumentRoot /var/www/html/yang
53 ServerName www.yh666.com
54 <directory /var/www/html/yang>
55 allowoverride None
56 require all granted
57 </directory>
58 </virtualhost>
59
60 <virtualhost 192.168.33.110:88> #修改
hong777.com的虚拟主机端⼝为88,其余内容不变
61 documentroot /var/www/html/hong
62 servername www.hong777.com
63 <directory /var/www/html/hong>
64 allowoverride none
65 require all granted
66 </directory>
67 </virtualhost>
:wq #保存并退出
[root@server2 html]# systemctl reload httpd.service 
#重载服务
(2)访问测试
浏览器内分别输⼊ 192.168.33.110:80 和 192.168.33.110:88
在访问时记得关闭防⽕墙或者修改防⽕墙放⾏端⼝规则。
[root@server2 ~]# firewall-cmd --add-port=88/tcp 
#添加tcp协议的88端⼝防⽕墙放⾏服务
success
[root@server2 ~]# firewall-cmd --list-all
public (active)
 target: default
 icmp-block-inversion: no
 interfaces: ens32 ens34 ens35
 sources:
 services: cockpit dhcpv6-client http ssh
 ports: 873/tcp 88/tcp #添加成功
 protocols:
 forward: no
 masquerade: no
 forward-ports:
 source-ports:
 icmp-blocks:
 rich rules:
7、域名相同,IP 不同的虚拟主机
(1)添加⽹络⼦接⼝
[root@server2 ~]# ifconfig ens32:0
192.168.33.120/24 #添加⽹卡虚拟⼦接⼝命令格式
[root@server2 ~]# ifconfig #查询当前系统存在的⽹卡信
息
......省略部分⽹卡信息......
ens32:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 
mtu 1500
 inet 192.168.33.120 netmask 255.255.255.0 
broadcast 192.168.33.255
 ether 00:0c:29:bd:1a:25 txqueuelen 1000 
(Ethernet)
......省略部分⽹卡信息......
(2)修改主配置
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
45 Listen 80
46 Listen 88
47
48 ServerName www.yh666.com:80
49
50 NameVirtualHost 192.168.33.110
51 <VirtualHost 192.168.33.110:80>
52 DocumentRoot /var/www/html/yang
53 ServerName www.yh666.com
54 <directory /var/www/html/yang>
55 allowoverride None
56 require all granted
57 </directory>
58 </virtualhost>
59
60 <virtualhost 192.168.33.120:88> #修改此处IP
地址为虚拟⼦接⼝,其余不变
61 documentroot /var/www/html/hong
62 servername www.hong777.com
63 <directory /var/www/html/hong>
64 allowoverride none
65 require all granted
66 </directory>
67 </virtualhost>
:wq #保存并退出
[root@server2 html]# systemctl reload httpd.service 
#重载服务
(3)访问测试
浏览器输⼊分别 192.168.33.110 和 192.168.33.120
⼀、Nginx
1、Nginx 简介
Nginx(engine X):开源、轻量级、⾼性能的 HTTP 和反向代理服务器,可以代理 HTTP、IMAP/POP3/SMTP 和 TCP/UDP协议。
基本特点:占⽤内存少、并发能⼒强,采⽤ C 语⾔编写,在性能⽅⾯有⼀定保证。
Nginx 可以⽤来做负载均衡及反向代理使⽤,⽬前使⽤最多的是负载均衡。与 Nginx 同类的 Web 服务有 Apache、Tomcat 等。
官⽅⽹站:http://nginx.org/
2、Nginx 服务器特点
(1)模块化设计
Nginx 将模块分为核⼼模块、HTTP 模块、事件模块和邮件模块四类。每个模块都有特定的职责,从⽽实现了整个 Web 服务器的功能。
(2)低内存消耗,⾼并发
Nginx 使⽤ epoll and kqueue 作为开发⼯具,能够⽀持最⼤50000 个并发连接数的响应;不论是系统资源开销还是 CPU 使⽤效率都很优秀。
(3)事件驱动
nginx 采⽤异步⽅式处理请求。
同步:指在发送⽅发出消息后,需要等待接收到接收⽅发回的响应,或者通过回调函数来接收到对⽅响应信息。
异步:指在发送⽅发出请求后,接收⽅不需要返回消息或者不等待返回消息,直接提供响应请求机制。
(4)⾼可靠性,master 与 worker 架构
⼀个主进程和多个⼯作进程。⼯作进程是单线程的,且不需要特殊授权即可运⾏;
master进程:主要⽤来监控worker进程⼯作状态进⾏相应重启、停⽌等操作。
worker进程:进⾏具体提供服务,接受请求和处理请求。
(5)⽀持热更新配置、⽇志⽂件滚动、平滑升级
/usr/local/nginx/sbin/nginx -s reloadhtml⽬录中的⽂件发上修改之后,不需要nginx服务 可向 master 发送 USR1、QUIT 等信号,⽆需强制停⽌服务即可完成热更新。向 master 发送的 USR1,可实现⽇志⽂件滚动。向 master 发送的 USR2,可实现平滑升级。
(6)丰富的扩展模块
可在编译安装 nginx 时指定拓展模块,例如:nginx-sticky、module 模块(基于 cookie 来进⾏负载转发)。
3、Nginx 和 Apache 区别
(1)架构
Apache 采⽤多进程架构,每个请求都由⼀个独⽴的进程处理;⽽Nginx采⽤异步事件驱动的架构,可以处理更多的并发连接。
(2)性能
由于Nginx的架构设计,它可以处理更多的并发连接,⽽且在⾼负载情况下表现更加稳定和可靠。因此,Nginx通常被认为是⽐Apache更⾼效的Web服务器。
(3)配置
Apache 的配置⽂件⽐较复杂,需要⼀定的学习和经验才能正确配置;⽽ Nginx 的配置⽂件⽐较简洁和可读性强,更容易理解和配置。
(4)功能
ngin x有许多模块可以扩展其功能,例如 mod_rewrite ⽤于URL 重写,mod_ssl⽤于 SSL 加密等;⽽apach 的功能⽐较简单,但是可以通过第三⽅模块扩展其功能。
4、Nginx 基本功能
(1)静态资源 Web 服务器
nginx 可实现动静资源分离
动态资源:需要程序处理或者从数据库中读数据,能根据不同的条件在⻚⾯显示不同的数据。
静态资源:前端的固定⻚⾯,这⾥⾯包含HTML、CSS、JS、图⽚、⾳乐等等,不需要查数据库也不需要程序处理,直接就能够显示的⻚⾯。
动静分离:当使⽤ nginx 处理静态⻚⾯时,可将⽤户的动态请求转发给后端的 tomcat 或 PHP 处理动态⻚⾯。前后端,前端就是完全的静态资源,
(2)基于域名/IP/端⼝的虚拟主机
虚拟主机:在Web服务⾥就是⼀个独⽴的⽹站站点,这个站点对应独⽴的域名(也可能是IP或端⼝),具有独⽴的程序及资源⽬录,可以独⽴地对外提供服务供⽤户访问。⼀个 nginx 主进程,指定⼀个配置⽂件,配置⽂件内有多个虚拟主机。如果不⽤虚拟机,⼀个域名就要对应⼀个服务器,浪费资源。
Ⅰ.基于域名的虚拟主机
以不同的多个域名区分不同的虚拟主机(IP 相同),放在⼀个nginx服务上,能够让⽤户有序访问⽣产⽤途,例如:www.jd.com 和 diannao.jd.comchannel.jd.com。
Ⅱ.基于端⼝的虚拟主机
以不同的端⼝,来区分多个虚拟主机,也是放在⼀个nginx服务上,能够让⽤户有序访问,例如:192.168.33.110:8080、www. baidu.com:8080.
Ⅲ.基于 IP 的虚拟主机
以不同 IP 区分不同的虚拟主机。
(3)HTTP/HTTPS、SMTP、POP3 和 TCP/UDP 反向代理 客户端代理,增强客户端的作⽤
反向代理是保护服务器
反向代理是⼀种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。
简单理解为⽤户直接访问反向代理服务器就可以获得⽬标服务器
的资源。
(4)负载均衡
所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游的应⽤服务器,这样即使某⼀个服务器宕机也不会影响请求的处理,或者当应⽤服务器扛不住了,可以随时进⾏扩容。
5 )⻚⾯缓存
Nginx 不仅仅是⼀个 Web 服务器,它还可以作为⼀个缓存服务器使⽤。 通过 Nginx 缓存,可以对⼀些静态资源或者数据更新频率较低的后端服务做缓存,降低静态资源或后端服务的响应时间,同时也会降低后端的负载。⽐如对⼀些图⽚,css或js做⼀些缓存,那么在每次刷新浏览器
的时候,就不会重新请求了,⽽是从缓存⾥⾯读取。这样就可以减轻服务器的压⼒。
(6)⽀持代理 FastCGI、uWSGI 等应⽤服务器CGI:描述了服务器(nginx,apache)和请求处理程序(django,flask,springboot web框架)之间传输数据的⼀种标准。定义了客户端与服务器之间如何传输数据。
FastCGI:快速通⽤⽹关接⼝(Fast Common Gateway Interface/FastCGI)是⼀种让交互程序与Web服务器通信的协议。FastCGI是早期通⽤⽹关接⼝(CGI)的增强版本。
WSGI:为Python定义的 web 服务器和 web 框架之间的接⼝标准。
uwsgi:uWSGI 服务器实现的独有的协议,定义传输信息的类型,是⽤于前端服务器与 uwsgi 的通信规范(uWSGI 服务器⾃由的⼀个协议)。
uWSGI:⼀个Web Server(web服务器),即⼀个实现了WSGI协议的服务器,处理发来的请求及返回响应。
web 服务器:
客户端(浏览器,app)跟服务器(web框架)之间的东⻄,服务器
中间件
# nginx apache 是⼀类东⻄,就是做请求转
发,符合fastcgi服务器
# uWSGI,gunicorn 只针对于python的web框架
# tomcat,jboss,weblogic 只针对java的web框架
# php-fpm 针对于php的框架
(7)⽀持 gzip、expires
当运维⼈员将要锁包放到html中,会⾃动部署
nginx ⽀持资源压缩和缓存控制。
(8)URL Rewrite
192.168.1.3/abc
192.168.1.3/a/b/c/
Rewrite 主要实现url地址重写,以及重定向,就是把传⼊web的
请求重定向到其他 url的过程。
(9)路径别名
资源路径的别名(root 和 alias)。
(10)基于 IP、⽤户的访问控制
nginx 可对指定 IP ⽹段或某个特定 IP 做访问控制(allow:允
许;deny:拒绝)。
(11)⽀持访问速率、并发限制
5、Nginx 架构
(1)主进程(master process)
主要与外界通信和⼯作进程管理。 读取 nginx 配置⽂件并验证有效性。
建⽴、绑定和关闭 socket(套接字,IP地址:端⼝号)。 按照配置⽂件⽣成、管理和结束⼯作进程。nginx 重启、停⽌、重载配置⽂件、平滑升级、管理⽇志⽂件
等。
(2)⼯作进程(worker process)
接受客户端请求,将请求交给各个功能模块处理。 接收主进程的指令并执⾏。
与后端服务器通信,接收后端服务器处理的结果,发送结果给客户端。数据缓存管理。访问缓存索引、重建、查询和调⽤缓存数据。cache 模块,主要 由缓存索引重建和缓存索引管理两个进程完成,缓存索引重建进程是在进程 nginx 服务启动⼀段时间之后,由主进程⽣成,对本地磁盘的索引⽂件在内存中建⽴元数据库,包括扫描、过期更新 等操作,完成后退出。系统 IO 调⽤,获取响应数据,发送响应给客户端。
⼆、Nginx ⽀持⾼并发的原因
1、 事件驱动模型
Nginx采⽤了异步事件驱动模型,它使⽤⼀个单独的⼯作进程来处理多个连接,每个连接都是异步的,不会阻塞其他连接。这种模型使得Nginx能够处理⼤量并发连接,⽽不会消耗过多的系统
资源。
2、 ⾼效的内存管理
Nginx使⽤内存池来管理内存分配,避免了频繁的内存分配和释放操作,从⽽提⾼了效率。此外,Nginx还采⽤了零拷⻉技术,减少了数据在内存和磁盘之间的复制次数,进⼀步提⾼了性能。
3、 负载均衡
Nginx可以作为反向代理,将请求分发给多个后端服务器,从⽽实现负载均衡。这样⼀来,每个端服务器只需要处理部分请求,整个系统的负载得到了均衡,提⾼了系统的并发能⼒。
4、⾼度可定制化
Nginx⽀持动态模块加载,⽤户可以根据⾃⼰的需求选择需要的模块进⾏编译和加载,从⽽提⾼了灵活性和可扩展性。
三、Nginx 的 I/O 模型
1、阻塞 I/O 模型
简介:进程会⼀直阻塞,直到数据拷⻉完成应⽤程序调⽤⼀个I/O函数,导致应⽤程序阻塞,等待数据准备好,如果数据没有准备好,⼀直等待......
当数据准备好,从内核拷⻉到⽤户空间,I/O函数返回成功。
阻塞I/O模型图:在调⽤recvfrom,发⽣在内核中等待数据和复
制数据过程:
当调⽤recv()函数时,系统⾸先检查是否有准备好的数据,如果数据没有准备好,那么系统就处于等待状态,当数据准备好后,将数据从系统缓冲区复制到⽤户空间,然后函数返回。
2、⾮阻塞 I/O 模型
简介:我们把⼀个套接⼝设置为⾮阻塞就是告诉内存,当所请求 的I/O操作⽆法完成时,不要惊扰进程睡眠,⽽是返回⼀个错误 ,这样I/O函数会不断的测试数据是否准备好,没有准备好,
继续测试,直到数据准备好为⽌。在测试的过程中会占⽤⼤量的CPU时间。
3、I/O 复⽤模型
简介:主要是 select 和 epoll;对于⼀个 I/O 端⼝,两次调⽤,两次返回,⽐阻塞I/O并没有什么优势,只是能实现同时对多个I/O 端⼝进⾏监听。
I/O 复⽤模型会调⽤selectpoll函数,这⼏个函数也会使进程阻塞,但是和阻塞I/O不同的,这个函数可以同时阻塞多个 I/O操作,⽽且可以同时对多个读操作,多个写操作的 I/O 函数进⾏ 检测,直到有数据可读或可写时,才真正调⽤I/O操作函数。
4、信号驱动 I/O
简介:两次调⽤,两次返回。⾸先允许套接⼝进⾏信号驱动 I/O,并安装⼀个信号处理函数, 进程继续运⾏并不阻塞。等数据准备好时,进程会收到⼀个SIGIO信号,可以在信号处理函数中调⽤I/O操作函数处理数据。
5、异步I/O模型
简介:数据拷⻉的时候进程⽆需阻塞当⼀个异步过程调⽤发出后,调⽤者不能⽴刻得到结果。实际处理这个调⽤的部件在完成后,通过状态,通知和回调通知调⽤者
输⼊输出操作。
同步 I/O 引起进程阻塞,直到 I/O 操作完成。
异步 I/O 不会引起进程阻塞。
I/O 复⽤先通过select调⽤阻塞。
⼀、Nginx 的内置变量
⼆、开启 nginx 状态监听模块
1、修改配置
进⼊ nginx 主配置⽂件(yum 和编译安装的⽂件路径不⼀
样)。
找到“server { }”,添加⼀个“location { }”,也就是虚拟主机。
[root@server2 ~]# vim
/usr/local/nginx/conf/nginx.conf
......省略部分内容......
 server {
 listen 80; #监听端⼝
 server_name localhost; #服务器名称
 charset utf-8; #字符集,utf-8为中⽂
字符集
#access_log logs/host.access.log main;
 location /status { #nginx状态的监听模块
 stub_status on;
 access_log off;
 }
 }
......省略部分内容......
:wq #保存并退出
[root@server2 ~]# systemctl restart nginx.service 
#重启nginx
2、访问测试
浏览器访问 192.168.33.110/status,查看 nginx 状态信息。
三、nginx 虚拟主机配置
⼀个“location”相当于⼀个虚拟主机,也就是⽤户访问⽹站时,点击跳转的另⼀个⻚⾯。
location 内可以添加 nginx 各种功能模块。
[root@server2 ~]# vim
/usr/local/nginx/conf/nginx.conf
......省略部分内容......
 server {
 listen 80; #监听端⼝
 server_name localhost;
 charset utf-8;
#access_log logs/host.access.log main;
 location /status {
 stub_status on;
 access_log off;
 }
 location / {
 root html; #⽹站在服务器上的⽬
录,默认为/usr/local/nginx/html
 index index.html index.htm; #跳转到
的⽹站⾸⻚
 }
 }
......省略部分内容......
:wq
[root@server2 ~]# systemctl restart nginx.service 
#重启nginx
四、nginx 反向代理配置
反向代理:⽤户直接访问反向代理服务器就可以获得⽬标服务器
(后端服务器)的资源。
1、修改配置
在配置⽂件中添加⼀⾏反向代理块指令(proxy_pass),表示当访问本机地址 192.168.33.110 的 80 端⼝时即可跳转到后端。服务器 192.168.33.11 的 80 端⼝上。
[root@server2 ~]# vim
/usr/local/nginx/conf/nginx.conf
......省略部分内容......
 server {
 listen 80;
 server_name localhost;
 charset utf-8;
#access_log logs/host.access.log main;
 location /status {
 stub_status on;
 access_log off;
 }
 location / {
 root html;
 index index.html index.htm;
 proxy_pass http://192.168.33.11:80; 
#添加⼀个反向代理模块
 }
......省略部分内容......
[root@server2 ~]# systemctl reload nginx.service 
#重载nginx配置
3、访问测试
浏览器输⼊本机地址 192.168.33.110,将会⾃动跳转到后端服务器 192.168.33.11 上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统|day2.进程、线程、协程

文章目录 进程概念特点并行和并发进程之间的通信进程的状态进程的调度基本准则调度方式具体算法 特殊进程 线程概念线程状态转换线程状态线程调度线程同步多线程通信 线程池种类工作流程五种状态拒绝策略参数队列大小 协程概念优势 进程 概念 进程就是正在运行的程序,它会占用…

进阶SpringBoot之 yaml 语法

SpringBoot 使用一个全局的配置文件&#xff0c;名字固定 application.properties 语法结构&#xff1a;keyvalue application.yml 语法结构&#xff1a;key&#xff1a;&#xff08;空格&#xff09;value 配置文件的作用是可以修改 SpringBoot 自动配置的默认值 在 res…

【NOI-题解】1022. 百钱百鸡问题1024. 购买文具1249. 搬砖问题1250. 马克思手稿的问题1342. 怎样种树?

文章目录 一、前言二、问题问题&#xff1a;1022. 百钱百鸡问题问题&#xff1a;1024. 购买文具问题&#xff1a;1249. 搬砖问题问题&#xff1a;1250. 马克思手稿的问题问题&#xff1a;1342. 怎样种树&#xff1f; 三、感谢 一、前言 欢迎关注本专栏《C从零基础到信奥赛入门…

无心剑小诗《郑钦文,为您骄傲》

郑钦文&#xff0c;为您骄傲 在赛场上如猎豹出击 每一拍都交织着力量与智慧 郑钦文&#xff0c;您是无畏的勇士 曾经的挫折是砥砺的砂石 今日的辉煌&#xff0c;是拼搏的勋章 今晚&#xff0c;红土上您书写传奇 战胜强敌&#xff0c;您气势如虹 汗水与激情洒满整个赛场 梦想…

49 序列解包的多种形式和用法

序列解包&#xff08;Sequence Unpacking&#xff09;是 Python 中非常重要和常用的一个功能&#xff0c;可以使用非常简洁的形式完成复杂的功能&#xff0c;提高了代码的可读性&#xff0c;减少了程序员的代码输入量。 x, y, z 1, 2, 3 # 多个变量同时赋值 v_tuple (False…

openpnp - loc_*.png是没用的临时文件

文章目录 openpnp - loc_*.png是没用的临时文件概述笔记END openpnp - loc_*.png是没用的临时文件 概述 前一段时间将X轴的固定螺母动了&#xff0c;让X轴运动更顺滑些。 不得已&#xff0c;对openpnp设备重新进行了标定。 到底部相机高级矫正完成后&#xff0c;正常退出&…

Datawhale AI 夏令营——AI+逻辑推理——Task3

# Datawhale AI 夏令营 夏令营手册&#xff1a;从零入门 AI 逻辑推理 比赛&#xff1a;第二届世界科学智能大赛逻辑推理赛道&#xff1a;复杂推理能力评估 代码运行平台&#xff1a;魔搭社区 大模型微调 LoRA LoRA&#xff08;Low-Rank Adaptation&#xff09;微调是一种…

Linux查看进程和进程号的几种方式

根据进程名查看进程号 1、pidof命令&#xff1a; 2、pgrep命令&#xff1a; 3、ps命令 根据进程号查看进程名&#xff1a; ps命令&#xff1a;

【UE 网络】Gameplay框架在DS架构中的扮演的角色

目录 0 引言1 核心内容1.1 Gameplay各部分创建的流程1.2 Gameplay框架在DS和客户端的存在情况1.3 数据是独立存在于DS和客户端的 2 Gameplay框架各自负责的功能2.1 GameMode2.2 GameState2.3 PlayerController2.4 PlayerState2.5 Pawn2.6 AIController2.7 Actor2.8 HUD2.9 UI &…

JVM:内存结构,直接内存,对象创建,死亡判定

对于从事C、C程序开发的开发人员来说&#xff0c;在内存管理领域&#xff0c;他们既是拥有最高全力的“皇帝”&#xff0c;又是从事最基础工作的劳动人民——既拥有每一个对象的“所有权”&#xff0c;又担负着每一个对象声明从开始到终结的维护责任。对于Java程序员来说&#…

Golang | Leetcode Golang题解之第319题灯泡开关

题目&#xff1a; 题解&#xff1a; func bulbSwitch(n int) int {return int(math.Sqrt(float64(n) 0.5)) }

SSM校园管理系统-计算机毕设定制-附项目源码(可白嫖)48395

摘 要 如今计算机行业的发展极为快速&#xff0c;搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用&#xff0c;其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助。自从2020年新冠疫情爆发以来&#xff0c;防疫成了社会关注的重中…

elementUI 的el-date-picker日期,开始时间不能大于结束时间

需求描述&#xff1a;form表单里有开始日期和结束日期&#xff0c;要求开始日期不能大于结束日期&#xff0c;但是开始日期可以等于结束日期。 效果如下&#xff1a; 实现代码&#xff1a; <el-form ref"form" :model"form" :rules"rules" …

UNI-APP_点击,长按,触摸,结束触摸事件

touchstartEventHandle手指触摸动作开始字节跳动小程序不支持touchmoveEventHandle手指触摸后移动字节跳动小程序不支持touchendEventHandle手指触摸动作结束字节跳动小程序不支持touchcancelEventHandle手指触摸动作被打断&#xff0c;如来电提醒&#xff0c;弹窗字节跳动小程…

errno错误码列举

errno&#xff0c;int变量&#xff0c;表示系统最近一次错误码。 当系统调用和一些库函数发生错误时&#xff0c;会给errno赋值&#xff0c;以指示哪里出了问题。 目录 errno值列表 errno值获取示例 errno值列表 <errno.h>头文件定义了errno的一些值&#xff0c;部分…

Spring MVC框架面试题

目录 一、什么是SpringMVC&#xff1f;简单介绍下你对SpringMVC的理解&#xff1f; 二、SpringMVC的流程&#xff1f; 三、SpringMVC的优点 四、SpringMVC的主要组件 五、SpringMVC怎么样设重定向和转发的&#xff1f; 六、SpringMVC怎么和Ajax相互调用的&#xff1f; 七…

Python酷库之旅-第三方库Pandas(064)

目录 一、用法精讲 251、pandas.Series.tz_localize方法 251-1、语法 251-2、参数 251-3、功能 251-4、返回值 251-5、说明 251-6、用法 251-6-1、数据准备 251-6-2、代码示例 251-6-3、结果输出 252、pandas.Series.at_time方法 252-1、语法 252-2、参数 252-3…

【java】单行注释(//)与多选注释(/* */)

文章目录 单行注释多行注释注意事项 在Java中&#xff0c;注释是用来给代码添加说明的&#xff0c;它不会被编译器执行。Java提供了两种主要的注释方式&#xff1a;单行注释和多行注释&#xff08;有时也称为块注释或块级注释&#xff09;。 单行注释 单行注释以两个正斜杠&…

爬小红book--自定义获取

免责声明:本文仅做分享!!! from DrissionPage import ChromiumPage import time pa str(input("输入关键词&#xff1a;")) pl str(input("输入评论内容&#xff1a;")) page ChromiumPage() page.get(https://www.xiaohongshu.com/search_result?keyw…

php生成xml文件的封装类文件-可生成带缩进格式化的xml文件及关于opcache缓存的操作小工具cachetool的使用

一、php生成xml文件的封装类文件-可生成带缩进格式化的xml文件 最近因为有需要&#xff0c;对生成xml文件进行了一些处理&#xff0c;很早之前使用过SimpleXML加载接口返回的xml数据并处理&#xff0c;这次的使用偏向于XML文件的生成。有一个需求&#xff0c;生成的xml文件格式…