1. Nginx简介
Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个非常流行的开源 Web 服务器软件。它是由俄罗斯程序员 Igor Sysoev
开发的,最初是为了解决在高并发场景下的C10k 问题(即一个服务器进程只能处理 10,000 个并发连接)的限制。Nginx 以其高性能、稳定性、丰富的功能集、简单的配置以及低资源消耗而被广泛使用。
nginx为什么能支持大并发?
Nginx 使用一个事件驱动的异步非阻塞 I/O 模型,默认使用 epoll
模型,这使得它在处理大量并发连接时表现非常出色。此外,Nginx 还支持worker进程,可以有效地分配资源并提高性能。
nginx的市场占用率
https://w3techs.com/technologies/cross/web_server/ranking
nginx官网
http://nginx.org
nginx官方文档 (重要! 很多配置可以查找官方说明)
https://nginx.org/en/docs/
2. Nginx的应用场景
在企业生产中,nginx的主要应用场景在四个方面:
静态资源服务用来部署图片、css、html等静态资源
代理服务作为统一入口或代理入口,进行服务转发、负载均衡等
安全控制做多个服务的入口,将入口部署ssl证书,以此实现服务的加密控制,而不用在每个后台服务部署证书
代理缓存将动态请求的资源在nginx中进行缓存,下次请求时直接从nginx获取,就不用再走后台服务,以此提高用户的访问速度
后续我们从上述4个方面对nginx的应用进行逐步学习,如果对nginx有兴趣的同学,可以关注专栏,以及时接收到更新通知。
3. Nginx安装
nginx支持2种部署方式:
yum工具安装安装包安装以下我们分别讲解
3.1 yum工具安装
1、设置nginx yum源
在官网:https://nginx.org/en/linux_packages.html#RHEL/CentOS中有关于yum源的说明
所以我们可以创建nginx.repo
文件,设置官方yum源,也可以用国内厂商,如阿里云的yum源,这里以官网yum源为例
创建nginx.repo
文件:
cd /etc/yum.repos.d/vim 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[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
如果是mac m1,可以再配置下arm架构的镜像源,直接执行如下指令即可
wget http://mirrors.aliyun.com/repo/Centos-altarch-7.repo -O /etc/yum.repos.d/CentOS-Base.repo
2、检查yum源配置完成
yum makecacheyum repolist
这里我以mac m1的执行效果为例,可以看到更新了nginx的yum源
3、安装nginx
yum install nginx -y
4、查看nginx版本
nginx -V
5、启动nginx
nginx
关闭nginx指令
# 强制退出,不管有没有正在处理的请求nginx -s stop# 优雅退出,等待正在执行的转发执行完成后再退出nginx -s quit# 重启nginx -s reload
通过yum安装的nginx的默认安装路径为:/etc/nginx
,日志文件默认路径为:/var/log/nginx
3.2 安装包安装
1、准备源码包:https://nginx.org/en/download.html
选择对应的版本下载即可
或者也可以通过指令下载
wget http://nginx.org/download/nginx-1.24.0.tar.gz
2、上传到服务器,并解压
tar xf nginx-1.24.0.tar.gz
3、准备依赖环境
yum install -y openssl-devel pcre-devel gcc
4、添加nginx用户
useradd nginx -m -s /sbin/nologin
5、预编译,在nginx目录下执行
–prefix 指定nginx安装目录,不指定默认为/usr/local/nginx
–sbin-path 指定nginx可执行文件安装目录,默认值<prefix>/sbin/nginx
–user 运行程序的用户
–group 运行程序的用户组
–with 需要添加的nginx模块
–modules-path 设置模块安装目录路径
–conf-path 指定配置文件路径,默认值<prefix>/conf/nginx.conf
–error-log-path 指定错误日志路径
–builddir 设置编译目录,会将编译后生成的文件写入到这个目录中
–modules-path 设置安装拓展模块的文件目录
./configure --prefix=/usr/local/nginx --sbin-path=/bin/ --user=nginx --group=nginx --withhttp_ssl_module --withhttp_stub_status_module --withhttp_gzip_static_module
检查是否安装成功
# 检查上一条命令执行结果,如果是0则执行成功,如果不是0则说明执行失败echo $?
6、安装nginx
make && make install
7、检查nginx版本
./bin/nginx -V
8、启动nginx
./bin/nginx
9、检查nginx端口
netstat -lntup | grep nginx
4. nginx访问
nginx的默认端口是80, 如果是虚拟机安装的,记得开通虚拟机的80端口,或者关闭防火墙
# 查询22端口是否开放firewall-cmd --query-port=80/tcp# 开启端口firewall-cmd --add-port=80/tcp --permanent# 开启后重新加载firewall-cmd --reload
访问虚拟机ip:80端口即可访问到nginx, 因为http默认80端口,所以可以省略端口访问:
5. 开机自启
yum安装的nginx会自动创建systemctl脚本,可以直接加入开机自启
systemctl enable nginx
如果无法执行,可以先创建脚本
vim /lib/systemd/system/nginx.service
脚本内容
[Unit]Description=nginx serviceAfter=network.target [Service] # 后台运行Type=forking # 启动指令ExecStart=/usr/local/nginx/sbin/nginx# 重启指令ExecReload=/usr/local/nginx/sbin/nginx -s reload# 强制退出指令ExecStop=/usr/local/nginx/sbin/nginx -s quit# 给服务分配独立的临时空间PrivateTmp=true [Install] WantedBy=multi-user.target
6. 总结
下一节我们将来学习nginx的目录结构及各类配置文件的作用,并配置一个简单的转发带大家先感受下nginx的使用