一、nginx网络服务器:
1. nginx是开源的,是一款高性能,轻量级的web服务软件;稳定性高,而且版本迭代比较快;修复bug速度比较快,安全性高;消耗资源低,http的请求并发连接,单台服务器可以支持30000-50000个并发请求(系统资源全部分配给nginx);单个节点的nginx一般支持20000个并发请求
2.nginx的功能:
静态文件服务:静态页面,可以直接提供静态文件服务,html css jsp ,处理静态页面的响应速度快,效率很好
代理:正向代理,反向代理,可以实现负载均衡,高可用和故障转移。
动态处理:nginx不能直接处理动态请求,但是可以通过中间件(例如tomcat)把动态请求转发给后端服务器
支持加密的http及https
可以实现重定向
虚拟主机:一个nginx可以配置多个域名和站点。
nginx自带缓存
性能可扩张:处理能力可以随时调整
3.nginx的应用场景:
静态页面;转发动态请求;反向代理,负载均衡;缓存服务
二、nginx的安装:
1.配置安装包:nginx-1.22.0.tar.gz
2.先关闭防火墙和安全机制:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
3.然后安装依赖环境;
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
4.创建程序用户:useradd -M -s /sbin/nologin nginx
5.安装包解压:tar -xf nginx-1.22.0.tar.gz
6.给解压包权限:chown nginx.nginx nginx-1.22.0
7.进入cd nginx-1.22.0目录
8.开始配置:
./configure --prefix=/usr/local/nginx \ #指定安装目录
--user=nginx \ #指定运行用户
--group=nginx \ #指定运行组
--with-http_ssl_module \ #开启对http的ssl加密支持
--with-http_v2_module \ #支持http2.0协议
--with-http_realip_module \ #允许nginx获取客户端的真实ip
--with-http_stub_status_module \ #启动了stud_status模块,可以获取nginx的访问和状态信息
--with-http_gzip_static_module \ #支持压缩文件内容 图片
--with-pcre \ #相当于动态库
--with-stream \ #开启tcp/udp的代理模块支持,也就是四层转发
--with-stream_ssl_module \ #支持四层转发的ssl加密
--with-stream_realip_module #nginx可以从四层转发的头部信息中获取客户端的真实ip
9.编译安装make -j 4 && make install
10.进入软件目录:cd /usr/local
11.修改nginx权限:chown nginx.nginx nginx
12.ln -s /usr/local/nginx/sbin/nginx /usr/sbin
13.修改配置文件: vim /lib/systemd/system/nginx.service
[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
14.进入nginx目录下:cd /usr/local/nginx
conf:保存nginx的所有配置文件,其中nginx.conf是nginx的主配置文件
html:保存nginx的web文件,.html结尾的文件,图片
50x.html:是nginx默认的报错提示页面
logs:保存日志的目录,路径可以改
access.log:记录的是访问日志记录
error.log:记录报错日志403 404 500
sbin:放的是nginx的二进制启动脚本
15.在nginx目录下创建run目录:mkdir run
给run权限:chown nginx.nginx run
16.进入conf目录 :cd conf
17.修改配置文件:vim nginx.conf
pid /usr/local/nginx/run/nginx.pid #找到 pid开头的行进行修改
18.改配置文件,一定要重启服务:systemctl daemon-reload
重新加载配置:systemctl start nginx.service
19.检测nginx配置文件:nginx -t
20.查看版本:nginx -v
三、nginx命令:
nginx -t:检测nginx配置文件以及配置文件语法是否正确
nginx -v:只查看版本
nginx -V:查看版本又查看nginx支持的配置模块
nginx -s:给nginx主程序发送信号,不能开启nginx服务
nginx -s信号类型:stop(关闭)、restart、reload(重新加载nginx,如果更改了配置文件,nginx-s reload无需重启服务)
四、vim nginx.conf配置文件内容详解:
1.全局模块:worker_processes 1;:指定工作进程数,设置成服务器内核数的2倍(一般不超过8个,超过8个会降低性能);修改进程数在/etc/security/limtes.conf最后一行添加(* soft nproc 65535 能打开的进程最大数的软限制是65535;*hard nproce 65535能打开的进程最大数是65535;* soft nofile 65535 进程打开文件的最大值也是65535;* hard nofile 65535进程最大数的硬限制65535)修改之后重启后才生效。
2.events模块:决定了nginx能够处理的连接数,连接数和worker_processes的数值相乘,默认是1024个(处理进程)
3.stream:四层代理模块
4.http模块:转发和处理http请求,主要处理静态页面,设置正向代理和反向代理,缓存,定义日志格式,重定向配置。(http里可以包含多个server模块,一个server模块就是一个主机)
include:文件扩展名于文件类型的映射表,nginx能够打开的文件和支持的文件类型。
default_type:默认支持的文件类型(.html .htm)
log_format:日志格式,记录了access.log,访问日志的格式,error.log也是一样的格式
access_log:默认的访问日志的存放路径
sendfile on:支持文件发送和下载
tcp-nopush on:默认就是异步非阻塞模式功能(每个客户可以同时向服务器发送信息,各不受影响)
keepalive_timesout 65:连接保持的时间,单位为秒
gzip on:开启页面压缩功能
5.server模块(在events模块,是开启web服务的模块;http里可以包含多个server模块,一个servermo'kuai):listen 80:nginx的默认监听端口为80;server_name :配置站点的域名;charset koi8-r:网页的默认字符集,改为charset utf-8默认支持中文;accesss_log:网页匹配的工作目录的地址和支持的打开页面的文件类型;
location / :(location模块)表示nginx配置文件的家目录,默认就是/
root html:nginx工作目录的家目录,默认就是/usr/local/nginx/html;alias:也是匹配nginx的工作目录。
在server模块中可以有多个location模块
6.root和alias之间匹配的都是nginx工作目录,其区别:
root的匹配模式相当于拼接(在root的工作目录,访问的就是uri/下的内容,可以写作为location /xy101 root /opt/test),可以写在server模块也可以写在http里,也可以写在location
alias匹配nginx工作目录的路径是绝对路径,只能写在http模块当中server模块的location模块里面,不能够使用重定向功能。
练习
五、实验
1.统计nginx的访问状态
2.基于密码的授权进行访问控制
先安装yum -y install httpd-tools #httppasswd的工具
3.基于客户端的访问控制 ,也就是根据ip地址来进行控制
4.基于域名的nginx主机
vim /etc/hosts
5.基于多个域名的nginx主机
6.基于ip地址的虚拟主机
同时修改两个server模块的端口号
7.基于端口实现多个虚拟主机
8.多个配置文件:
conf.d:不是固定的,可以根据自己喜好起名
六、nginx的优化
1.隐藏版本号
2.修改用户及用户组
3.设置页面的缓存时间,主要是针对动态页面及图片缓存
4.日志分割:apache是自带日志分割的,按天来进行收集日志,但是nginx没有日志分割。
5. 更改进程数设置cpu绑定(重点)
6.连接超时
7.配置页面压缩
8.回收TIME_WAIT:time_wait是tcp连接当中的一种状态,出现在四次挥手之后;处于等待状态,双方不再发送数据。time_wait所占用的系统资源很小,完全可以忽略不记,但是太多了,就有一定的影响,进行连接断开,尽快的把time_wait状态连接进行回收。
统计当前系统的连接状态
七、 防盗链