nginx网站服务:
nginx是一款高性能而且轻量级的web服务软件
提供静态页面服务。就是一个纯文本格式的文件,一般都是以.html或.htm格式为结尾的文件
特点:
稳定性一般(nginx的bug很多,更新迭代很快)
httpd 俗称阿帕奇 在国内用的比较少,国外主要是用阿帕奇
nginx是开源的(免费)
阿里就是基于nginx做的二次开发:tengine
对于系统的资源消耗非常低,它也是http协议(单台物理服务器可以支持并发量3w-5w台,在工作中一般设为2w个左右,保存服务器稳定),因此相对于阿帕奇更好
1.处理静态页面,可以直接提供静态页面的文件服务。html、图片、动画也可以,能够高效的处理并且响应静态页面的请求。(静态页面)
2.反向代理,可以通过反向代理实现负载均衡和高可用
3.处理动态请求,nginx一般是把动态请求转发到后端服务器,由专门处理动态请求的服务器进行处理。然后动态请求处理完之后,还是nginx来响应给客户端
4.支持加密的http协议,也就是https
5.支持虚拟主机
6.支持URL的重定向功能,也就是页面跳转
7.nginx自带缓存机制,可以缓存静态页面的内容,减轻后端服务器的压力
8.nginx自带日志记录,访问日志(哪些主机访问了本机的nginx服务),报错日志(1.访问失败的记录,2.配置文件错误3.nginx启动失败的记录)
9.可以支持模块扩展。可以加载不同的模块和自定义配置
10.低内存消耗:例如1w个keep-alive连接保持,只占3M不到的内存
11.支持热部署,也就是可以不停机更新配置文件与升级版本
1.静态页面服务
2.转发动态请求
3.反向代理负载均衡
4.缓存服务
5.连接保持和会话保持
1.下载安装包,我们进行编译安装
ps:我是安装在opt目录下的
2.下载相关依赖关系
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
3.创建运行用户、组 (Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx
4、解压
tar -xf nginx-1.22.0.tar.gz
5.进入刚刚解压的目录中
cd nginx-1.22.0/
6.将下面代码复制暂停到目录下回车。PS:请把中文删除,中文是解释对应命令的意思
./configure --prefix=/usr/local/nginx \ --user=nginx \
#指定用户名
--group=nginx \
#指定所在组
--with-http_ssl_module \
#支持http协议
--with-http_v2_module \
#支持http2.0协议
--with-http_realip_module \
#支持从客户端获取真实ip
--with-http_stub_status_module \
#支持访问nginx状态信息的方法
--with-http_gzip_static_module \
#支持对页面进行压缩的功能
--with-pcre \
#支持pcre库
--with-stream \
#可以支持stream模块,也就是可以支持四层代理
--with-stream_ssl_module \
#可以支持加密传输的四层代理
--with-stream_realip_module
#运行nginx从代理(proxy) 协议的头部获取客户端的真实ip地址
6.make && make install
7.cd /usr/local
8.chown -R nginx.nginx nginx/ #修改权限
cd nginx/
ll
conf:nginx的配置文件,所有的配置文件都在该目录中。nginx.conf
html: 保存的是nginx的web文件,也就是工作目录。也可以更改。50x的web文件是默认的报错展示页面
logs:日志文件。PS:位置可以改
sbin: nginx的二进制启动的脚本文件
9.在nginx目录下
ln -s /usr/local/nginx/sbin/nginx /usr/sbin #让系统识别nginx的操作命令
10.nginx -t #检测配置文件语法和配置项是否正确
11.vim /lib/systemd/system/nginx.service
12.将下面内容复制进去,然后保存退出
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
ps:名词解释
ExecReload=/bin/kill -s HUP $MAINPID
kill -s HUP $MAINPID
HUP:重新启动服务
ExecStop=/bin/kill -s TERM $MAINPID
kill -s TERM $MAINPID
TERM :关闭服务
13.mkdir run #创建一个run目录
14.cd conf/
15.编译 vim nginx.conf 文件
pid /usr/local/nginx/run/nginx.pid;
16.重启服务
systemctl daemon-reload
systemctl restart nginx
17.cd .. #进入nginx目录下
cd html/ #进入html目录下
18.vim index.html
编译文件随便写内容,这里的内容如果是中文会显示乱码,很正常,这是在另外的配置文件修改的
然后验证,前提防火墙和安全机制都关闭了
这边实际上已经安装完成并验证成功
nginx命令解释:
nginx -t:检测配置文件语法和配置项是否正确
nginx -v:显示nginx的版本
nginx -V:即显示版本又显示配置项
nginx -signal:向nginx的主程序发送信号(stop restart reload)
nginx除了编译安装还有yum安装
yum安装:编译安装和yum不要同时使用。也就是两个服务不要即yum安装又编译安装,系统默认识别的是yum安装
yum -y install epel-release #yum安装必须先安装这个
yum -y install nginx #然后才安装nginx
面试题:
nginx的配置文件:
nginx.conf配置文件当中的内容:
PS:上图events内容,默认是1024个如果想要改大需要配置下面的文件
PS:这是在文件的最底下添加内容
PS:之前安装实验乱码的情况,可以修改上图的字符集来完成
总结一下配置文件:
全局模块
events模块:配置连接数
http模块:代理地址,日志,虚拟主机等等都在http中
一个http模块中,可以有多个server块,server模块只能在http模块中。
location模块只能写在server模块当中,一个server模块可以有多个location(匹配工作目录)
如何更改默认工作路径
下面是root与alias的区别与实验:
root路径在默认html中实验:
在默认html目录下创建test目录与之对应的index.html。页面内容
在index.html文件中添加一下内容
可以在浏览器查看结果
下面是用使用root在opt目录下实验,也就是更改默认路径
创建要访问的页面内容
下面是用alias实验:
因为我们是访问同一个test页面内容,之前已经创建过了,这边就不需要再重新创建了,注意,访问的页面没有时,一定要创建,不然实验没有意义
总结:
root和alias:指定工作目录的区别 root是拼接 /opt/html/test/index.html
alias是精确指定:
/test URI
/opt/html/test
两者区别
root可以在server模块中,但是alias只能在location中
alias匹配的uri 是/必须要以/结尾,root不需要
实验题:
123访问test用root
456访问动画用户alias
实验题:
实现访问状态统计:
首先先进入配置文件
添加status
检查是否有错误,没有错误就重启服务
在浏览器访问
名词解释
Active connections: 1 #表示当前活动的连接数 三个数字:已经处理的连接数,成功tcp握手次数 已处理的请求数
server accepts handled requests 16 16 16 Reading: 0 Writing: 1 Waiting: 0 reading: 表示当前正在读取客户端请求的连接数。服务器正在从客户端读取数据。 writing: 表示服务器正在讲响应的数据发送给客户端 waiting: 有连接处于空闲状态。等待新的连接
实验题:
实现基于客户端访问控制:
模拟两台客户端。此时两台客户端都已经关闭防火墙和安全机制
先实验一下,两台客户端是否可以正常访问
这里可以看到访问没有问题
配置文件
实验结果
实验题:
如何使用域名的nginx:
配置文件
创建访问目录
创建访问的内容
配置hosts文件
实验结果:ps想要访问需要提前配置hosts文件,不然访问不了
衍生实验:
基于ip地址的虚拟主机
实验结果
基于端口
实验结果
实验题:
需要授权:
首先先安装工具
yum -y install httpd-tools
我这里已经安装过了
创建一个用户密码
配置权限
配置文件
重启配置文件
实验结果
总结:
核心nginx配置文件
全局:主要是用户和工作进程
events:连接数
http:虚拟主机和页面配置,代理
http模块当中可以有多个server多个虚拟主机,一个虚拟主机就是一个网站
server只能在http模块中,排除stream,它可以配置server
location只能在server模块中,一个server可以有多个location
location的作用:匹配URI
root:拼接
alias:精确