一、web服务器
一般提到web服务器,就是指httpd或Nginx服务。
httpd就是Apache,在国内用的较少。
Nginx在国内使用的比较广泛。
1.1 Nginx
Nginx是开源的,是一款高性能,轻量级的web服务软件。
Nginx稳定性高,而且版本迭代比较快。目前主流的是22、24版本。修复bug比较快,安全性好。
Nginx消耗系统资源很低。http的请求并发连接,单台服务器可以支持30000-50000个并发请求(系统资源全部分配给Nginx使用的情况下)。单个节点的Nginx分配的资源一般支持10000-20000个并发。
1.2 Nginx的功能
Nginx的功能介绍
1、 静态文件服务 :静态页面,可以直接提供静态文件服务,html css jsp等。处理静态页面的响应速度很快,效率很高。
2、代理功能 :正向代理,反向代理。可以实现负载均衡,高可用和故障转移。
3动态内容处理 :Nginx并不能直接处理动态请求,可以通过中间件(如php Tomcat)把动态请求转发给后端服务器。
4、支持http和https。
5、可以实现重定向。6、虚拟主机 :一个Nginx可以配置多个域名和站点。
7、Nginx自带缓存机制。
8、性能可扩展 :处理能力可以随时调整。
Nginx的应用场景
- 静态页面
- 转发动态请求
- 反向代理、负载均衡
- 缓存服务
1.3 Nginx的常用命令
nginx -t :检测配置文件的语法是否正确
nginx -v :显示Nginx的版本
nginx -V :显示Nginx的版本和配置项
nginx -s :signal,信号:
stop :关闭Nginx
reload :重新加载Nginx,如果更改了配置文件,nginx -s reload 无需重启服务
二、Nginx的配置
nginx.conf
配置文件,在/usr/local/nginx/conf/
目录下修改这个配置文件
2.1 全局模块
工作进程组,一般设置为系统内核数量的两倍,但一般不超过8个,超过8个性能反而会下降
events模块 :决定了Nginx能够处理的连接数,连接数和worker_processes的数值相乘。
处理进程的过程必然涉及配置文件和展示以页面,也就是涉及打开文件的数量。Linux默认打开的文件数就是1024个。如果不修改Linux打开文件数量的默认配置,那这里设置的再高也无效。修改默认打开文件数的方法如下:
这个配置要生效,只能重启系统,所以这是系统初始化时要做好的配置。
2.2 http 模块
http模块 :转发和处理http请求,设置代理(正向代理和反向代理),缓存,定义日志格式,重定向配置。
在http模块当中,包含:
server模块 :http模块里面可以有多个server模块
在server模块中包含:
location模块
在server模块当中可以有多个location模块
2.3 server
模块
server
模块包含location
模块,可以包含多个location
模块
server
模块内容的解释:
2.4 location
模块
location
模块:配置打开网页匹配的工作目录的地址和支持打开页面的文件类型
root 表示 Nginx工作目录的家目录,默认从Nginx的根目录(安装路径)/usr/local/nginx出发;
所以root html;就表示工作目录的家目录为Nginx根目录下的html;
location 后面跟的路径表示URL的匹配规则,上文中后面跟的是 /,表示对访问家目录(工作目录)下的所有请求进行处理,不指定URI时(比如访问20.0.0.10,而不是20.0.0.10/test1),默认返回html 下的index.html
location 后面跟的路径不是/时,比如:
此时定义工作目录的家目录为 /var/www/html
location /ykw
表示可以对家目录下的ykw
这个目录进行匹配,如IP地址为20.0.0.10
就会返回/var/www/html/ykw
这个目录下的index.html
,如果这个目录下没有可返回的文件,Nginx会返回状态码404
此外,alias也可以指定家目录,指定的模式和root略有区别:
root的匹配模式,拼接root后的路径和location后的路径
alias的匹配模式,匹配Nginx的工作目录,路径是绝对路径
alias只能写在http模块当中server模块的location模块当中
root可以写在server模块,也可以在http,也可以在location中
alias匹配工作目录,不能使用重定向功能
三、实验
3.1 实验一:统计Nginx访问状态
三个数子从左到右:已经处理的连接数,成功的tcp握手次数(连接数),已经处理的请求数
reading :表示服务端正在从客户端读取请求的数据
writing :表示服务端正在将响应数据发送给客户端
waiting :表示有连接处于空闲状态,等待新的请求
3.2 实验二:对访问进行控制
-
基于密码的授权进行访问控制
2、基于客户端的访问控制,根据IP地址进行控制
3、基于域名的访问控制
编辑默认访问页面
在另一台主机test2
20.0.0.20
的/etc/hosts
文件中作dns映射
在test2
上操作
基于IP地址的访问控制
创建虚拟主机
以3中的server为例,修改server模块中listen 后面为 IP地址:端口
在test2
上操作
5、 基于端口的访问控制
修改server模块中listen 后面的端口号,同一个IP地址可以对多个端口提供服务
在test2
上操作
3.3 独立文件配置server模块
把server模块的配置保存在单独的文件中
被识别到的conf文件里只写有server模块的配置,被nginx.conf识别到以后,会自动调用nginx.conf文件中的http模块的配置。