Nginx概述
与 Apache 软件类似,Nginx (“engine x”)是一个开源的、支持高性能、高并发的web服务和代理服务软件。它是由俄罗斯人 Igor Sysoev 开发的,最初被应用在俄罗斯的大型网站 www.rambler.ru 上。后来作者将源代码以类 BSD 许可证的形式开源出来供全球使用。
Nginx 可以运行在Unix、Linux、BSD、Mac Os X、Solaris,以及 Microsoft Windows等操作系统中。随着 Nginx 在国内很多大型网站的稳定高效运行,其近两年也逐渐被越来越多的中小型网站所使用。当前流行的 Nginx web 组合被称为 LNMP。
Nginx 因具有高并发(特别是静态资源)、占用系统资源少等特性且功能丰富而逐渐流行起来,到目前为止大有赶超 Apache,而获得第一的趋势。
why Nginx
-
可靠,服务稳定,而且非常轻量
功能模块少 (源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
代码模块化 (易读,便于二次开发,对于开发人员非常友好)
安装简单、配置文件简洁,配置灵活
-
高性能:支持高并发,能支持几万并发连接
-
资源消耗少:3万并发,开启10个Nginx线程消耗不到200M内存
-
功能强大
可做反向代理及负载均衡,相当于专业的Haproxy或LVS功能
可做缓存(相当于Squid)
-
Nginx支持Epoll网络I/O模型,Apache采用传统Select网络I/O模型
Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,处理高并发大量请求时性能低下。
Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。
比喻:你去宿舍找人。select会带你挨个房间找;epool会先登记每个人的房间号,你来了只需告诉你房间号。
-
互联网公司都选择Nginx
1.Nginx技术成熟,具备的功能是企业最常使用而且最需要的
2.适合当前主流架构趋势,微服务、云架构、中间层
3.统一技术栈,降低维护成本,降低技术更新成本。
Nginx典型应用场景
(1)作为Web 服务软件
(2)反向代理或负载均衡服务
在反向代理负载均衡功能方面,它类似于大名鼎鼎的 LVS负载均衡以及 Haproxy 专业代理软件,但是Nginx 部署起来更为简单、方便。
(3)前端业务数据缓存服务
在Web缓存服务方面,Nginx可通过自身的proxy_cache模块实现类似Squid等专业缓存软件的功能。
Nginx安装
安装方式:
1、编译安装Nginx (1.版本随意 2.安装复杂 3.升级繁琐 4.规范 5.便于管理)
2、epel仓库安装Nginx (1.版本较低 2.安装简单 3.配置不易读)
3、官方仓库安装Nginx (1.版本较新 2.安装简单 3.配置易读)
2与3安装对比:
##### epel仓库安装 #####直接yum install -y nginx 是走eple仓库root@web02,172.16.1.8:~ # nginx -vnginx version: nginx/1.20.1 #//版本较低公司没规定就直接安,因为快##### 官方仓库安装 #####https://nginx.org/en/download.html 拉到最底下https://nginx.org/en/linux_packages.htmlhttps://nginx.org/en/linux_packages.html#RHEL-CentOS# 先vim /etc/yum.repos.d/nginx.repo再安装把上面的官方仓库考进来[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true# 此时yum安装可以看到是走上面的[nginx-stable]源yum install -y nginx# 查看版本[root@web01 /etc/yum.repos.d]# nginx -vnginx version: nginx/1.24.0 #//版本较新##### epel仓库安装 ##### 直接yum install -y nginx 是走eple仓库 root@web02,172.16.1.8:~ # nginx -v nginx version: nginx/1.20.1 #//版本较低 公司没规定就直接安,因为快 ##### 官方仓库安装 ##### https://nginx.org/en/download.html 拉到最底下 https://nginx.org/en/linux_packages.html https://nginx.org/en/linux_packages.html#RHEL-CentOS # 先vim /etc/yum.repos.d/nginx.repo再安装 把上面的官方仓库考进来 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true # 此时yum安装可以看到是走上面的[nginx-stable]源 yum install -y nginx # 查看版本 [root@web01 /etc/yum.repos.d]# nginx -v nginx version: nginx/1.24.0 #//版本较新##### epel仓库安装 ##### 直接yum install -y nginx 是走eple仓库 root@web02,172.16.1.8:~ # nginx -v nginx version: nginx/1.20.1 #//版本较低 公司没规定就直接安,因为快 ##### 官方仓库安装 ##### https://nginx.org/en/download.html 拉到最底下 https://nginx.org/en/linux_packages.html https://nginx.org/en/linux_packages.html#RHEL-CentOS # 先vim /etc/yum.repos.d/nginx.repo再安装 把上面的官方仓库考进来 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true # 此时yum安装可以看到是走上面的[nginx-stable]源 yum install -y nginx # 查看版本 [root@web01 /etc/yum.repos.d]# nginx -v nginx version: nginx/1.24.0 #//版本较新
Nginx启停
# 启动systemctl start nginxnginx/usr/sbin/nginx# nginx加入开机自启systemctl enable nginx# 停止systemctl stop nginxnginx -s stop/usr/sbin/nginx -s stop# 重启systemctl restart nginx# 重新加载systemctl reload nginx# 选项-c 指定配置文件的路径-t 检测配置文件语法问题(不检测单词拼写)-s 启停重载 属于服务操作-v 查看版本号-V 检查nginx的编译参数# 启动 systemctl start nginx nginx /usr/sbin/nginx # nginx加入开机自启 systemctl enable nginx # 停止 systemctl stop nginx nginx -s stop /usr/sbin/nginx -s stop # 重启 systemctl restart nginx # 重新加载 systemctl reload nginx # 选项 -c 指定配置文件的路径 -t 检测配置文件语法问题(不检测单词拼写) -s 启停重载 属于服务操作 -v 查看版本号 -V 检查nginx的编译参数# 启动 systemctl start nginx nginx /usr/sbin/nginx # nginx加入开机自启 systemctl enable nginx # 停止 systemctl stop nginx nginx -s stop /usr/sbin/nginx -s stop # 重启 systemctl restart nginx # 重新加载 systemctl reload nginx # 选项 -c 指定配置文件的路径 -t 检测配置文件语法问题(不检测单词拼写) -s 启停重载 属于服务操作 -v 查看版本号 -V 检查nginx的编译参数
验证是否安装成功:打开浏览器访问
注意防火墙和SElinux是否关闭。