http就是apache,在国内很少用
国内大多用nginx,nginx是开源的,是一款高性能,轻量级的web服务软件
稳定性高,而且版本迭代比较快(修复bug速度快,安全性高)
消耗系统资源很低,http的请求并发连接,单台服务器可以支持3-5万个并发请求。(系统资源全部分配给nginx),单个节点的nginx一般支持2万个并发
nginx的功能:
1)静态文件服务:静态页面,可以直接提供静态文件服务,如 html、css、jsp。处理静态页面的响应速度很快,效率很好
2)代理:正向代理,反向代理。可以实现负载均衡、高可用和故障转移
3)动态内容处理,nginx并不能直接处理动态请求,可以通过中间件把动态请求转发给后端服务器
4)支持加密的http,即https
5)可以实现重定向
6)虚拟主机,一个nginx可以配置多个域名和站点
7)nginx自带缓存机制
8)性能可扩展,处理能力可以随时调整
nginx的应用场景
静态页面
转发动态请求
反向代理,负载均衡
缓存服务
编译安装nginx流程
1.先关闭防火墙和安全机制:
systemctl stop firewalld
setenforce 0
2.安装依赖环境;
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
3.创建程序用户:useradd -M -s /sbin/nologin nginx
4.安装包解压
tar -xf nginx-1.22.0.tar.gz
5.开始配置:
./configure --prefix=/usr/local/nginx \ 指定安装目录
--user=nginx \ 指定运行用户
--group=nginx \ 指定运行组
--with-http_ssl_module \ 支持https的加密功能ss/tls
--with-http_v2_module \ 支持http2.0协议
--with-http_realip_module \ 支持nginx获取客户端的真实ip地址
--with-http_stub_status_module \ 支持nginx获取访问状态信息的功能
--with-http_gzip_static_module \ 支持页面压缩功能
--with-pcre \ 支持prce库
--with-stream \ 支持4层代理的模块
--with-stream_ssl_module \ 支持对tcp连接的加密
--with-stream_realip_module 支持从代理协议中获取客户端的真实ip地址
6.编译安装
make -j 4 && make install 启动四个cpu进行处理
7.进入软件目录
cd /usr/local/nginx/
chown -R nginx.nginx /usr/local/nginx #修改权限
如下:
[root@localhost nginx]# ll
总用量 4
drwxr-xr-x. 2 nginx nginx 4096 7月 1 15:11 conf ,配置文件目录 nginx.conf主配置文件
drwxr-xr-x. 2 nginx nginx 40 7月 1 15:11 html ,工作目录 50x.html 默认的访问操作打开的页面,index.html 默认的访问主页
drwxr-xr-x. 2 nginx nginx 6 7月 1 15:11 logs , 访问日志目录 访问日志 报错日志
drwxr-xr-x. 2 nginx nginx 19 7月 1 15:11 sbin ,nginx的二进制启动脚本
8.建立软连接,让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
9.修改配置文件
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
#表示支持dns解析以及该软件依赖于网络。
Wants=network-online.target
#先启动网络服务,才能启动nginx
[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
#支持多用户模
10.创建目录
mkdir -p /usr/local/nginx/run/
11.修改配置文件
vim /usr/local/nginx/conf/nginx.conf
找到 pid的位置修改 :pid /usr/local/nginx/run/nginx.pid;
12.重启服务
systemctl daemon-reload
重新加载配置
systemctl restart nginx
nginx的常用命令
nginx -t :检测配置文件的语法是否正确
nginx -v :显示nginx的版本
nginx -V :显示版本和配置项
nginx -s 信号 stop 关闭nginx
reload 重新加载nginx,如果更改了配置文件,nginx -s reload 无需重启服务
nginx的配置文件
主配置文件
vim /usr/local/nginx/conf/nginx.conf
1、全局模块
知道进程数
2、events模块
决定了能够处理的连接数
处理进程的过程必然涉及配置文件和展示页面,也就是涉及打开文件和数量
linux默认打开的文件数是1024个,可以修改
一般设置10000-20000个
修改:进入 vim /etc/security/limits.conf
最后行添加:
修改完后只能重启才能生效
3、http模块
转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,重 定向配置
4、http当中的server模块
配置虚拟主机的设备。在http的模块中可以有多个server(可以配置多个虚拟主机)
5、server模块当中的location模块
在server当中可以有多个location模块
统计nginx的访问状态:status
各项含义:
Active connections: 1 : 当前活动的连接数
server accepts handled requests :表示已经处理的连接数
三个数字从左往右分别表示:已经处理的连接数;成功的建立连接的次数;已经处理的请求数
Reading :表示服务端正在从客户端读取请求的数据
Writing:表示服务端正在把响应数据发送给客户端
Waiting:表示连接处于空闲状态,等待新的请求