一、Nginx简介
Nginx是一个高性能的HTTP、反向代理服务,由俄罗斯人开发。其特点包括占有内存少、并发能力强,在同类网页服务器中表现优秀。Nginx的源代码以类BSD许可证的形式发布,因稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
NGINX 已成为 F5, Inc 的一员,是当前全球热门的开源项目 NGINX 背后的公司。F5 NGINX 提供云原生的、Kubernetes 友好的开源和商业解决方案,通过提供扩展性、可见性、安全性和治理功能,为至关重要的应用和 API 提供助力。
NGINX(读作:engine-x)是用于 Web 服务、反向代理、内容缓存、负载均衡、媒体流传输等场景的开源软件。NGINX 的创始人 Igor Sysoev 最初编写 NGINX 是为了解决 C10K 问题,如今,NGINX 已经成为全世界最流行的 web 服务器。
二、准备依赖资源
-
Nginx下载地址: nginx.org/en/download...
-
准备依赖包:在Linux系统中,需要先安装gcc、pcre、pcre-devel、zlib和openssl等依赖库。
gcc检查
gcc -v |
---|
已安装会显示版本号,如gcc-4.8.5-36.el7.x86_64,已安装则不需要再重复安装,未安装则提示未找到命令,则需要安装gcc,按网络条件选择在线或离线安装;
gcc在线安装
yum install gcc-c++ |
---|
gcc离线安装
准备安装包:在中间件[安装包]中
gcc-4.8.5-rpm.zip |
---|
或下载如下版本的安装文件
cpp-4.8.5-28.el7.x86_64.rpmgcc-4.8.5-28.el7.x86_64.rpmgcc-c++-4.8.5-36.el7.x86_64.rpmglibc-devel-2.17-222.el7.x86_64.rpmglibc-headers-2.17-222.el7.x86_64.rpmkernel-headers-3.10.0-862.el7.x86_64.rpmlibmpc-1.0.1-3.el7.x86_64.rpmmpfr-3.1.1-4.el7.x86_64.rpm |
---|
将文件上传到目标Linux系统的/home/nginx/gcc目录
cd /home/nginx/gccunzip gcc-4.8.5-rpmcd gcc-4.8.5-rpmrpm -ivh *.rpm --nodeps --force |
---|
pcre安装
pcre检查
rpm -qa pcre |
---|
已安装会显示版本号,如pcre-8.32-17.el7.x86_64,已安装则不需要再重复安装,未安装则提示未找到命令,则需要安装pcre,按网络条件选择在线或离线安装;
pcre在线安装
yum install -y pcre pcre-devel |
---|
pcre离线安装
准备安装包:在中间件安装包中
pcre2-10.35.tar.gz |
---|
将文件上传到目标Linux系统的/home/nginx/pcre目录
执行如下命令安装:
cd /home/nginx/pcretar -zxvf pcre2-10.35.tar.gzcd pcre2-10.35sudo ./configuresudo makesudo make install |
---|
zlib检查
| yum list installed | grep zlib* | | --------------------------------- |
已安装会显示版本号,如:1.2.7-18.el7,已安装则不需要再重复安装,未安装则无列表信息,则需要安装zlib,按网络条件选择在线或离线安装;
zlib在线安装
yum install -y zlib zlib-devel |
---|
zlib离线安装
准备安装包:在中间件[安装包](wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz)中或下载如下版本的安装文件:
zlib-1.2.11.tar.gz |
---|
将文件上传到目标Linux系统的/home/nginx/zlib目录。
执行如下命令安装:
cd /home/nginx/zlibtar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configuremakemake install |
---|
三、Nginx的安装
- 准备Nginx安装包 在中间件安装包中或下载如下版本的nginx安装文件: nginx-1.20.1.tar.gz 将文件上传到目标Linux系统的/home/nginx/目录
- 执行安装命令:
bash
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1/
sudo ./configure
指定安装路径( ./configure --prefix=/usr/local/nginx/ && make && sudo make install )
go
sudo make
sudo make install
安装后会打印出 nginx的安装目录 /home/nginx 以及配置文件目录/home/nginx/conf/nginx.conf 启动Nginx,nginx默认端口为80
bash
cd /home/nginx/sbin/
./nginx
- 查看是否启动成功:
arduino
curl http://127.0.0.1
如上信息即启动成功。
- Nginx常用命令
bash
cd /home/nginx/sbin
#启动
./nginx
#停止
./nginx -s stop
#重启
./nginx -s reload
查看是否启动
perl
ps -ef|grep nginx
开机启动配置,设置开机启动后
bash
vim /usr/lib/systemd/system/nginx.service
复制如下内容:
ini
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/home/nginx/sbin/nginx
ExecReload=/home/nginx/sbin/nginx -s reload
ExecStop=/home/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
#保存后,执行命令刷新开机配置:
systemctl daemon-reload
启动Nginx
sql
systemctl start nginx
停止Nginx
arduino
systemctl stop nginx
重启Nginx
systemctl restart nginx
重新加载Nginx
systemctl reload nginx
查看 Nginx 运行状态
systemctl status nginx
查看Nginx进程
perl
ps -ef | grep nginx
杀死Nginx进程
kill -9 pid # 根据上面查看到的Nginx进程号,杀死Nginx进程,-9 表示强制结束进程 修改端口号
bash
cd /home/nginx/conf
vi nginx.conf
如下图所示修改 listen后面的80为指定的端口号即可(不可被占用)
至此Nginx安装完成。
四、Nginx的配置
-
配置文件位置 :Nginx的主要配置文件是
nginx.conf
,通常位于/usr/local/nginx/conf
或/etc/nginx
目录下。 -
常用配置:
worker_processes
:指定工作进程数,一般设置为CPU核心数。worker_connections
:设置单个工作进程最大并发连接数。events
:配置事件驱动模型,如epoll、kqueue等。http
:配置HTTP相关参数,如sendfile、keepalive_timeout等。server
:配置虚拟主机,包括监听端口、域名解析等。location
:配置URL定位,如静态文件、动态请求等。
-
优化配置:
- 开启gzip压缩,提高传输效率。
- 配置SSL,支持HTTPS访问。
- 配置负载均衡,实现多服务器间的请求分发。
四、Nginx的应用场景
- 反向代理:作为Web服务器的前端,接收客户端的请求,并转发给后端的Web服务器。
- 负载均衡:将用户请求分发到多个后端服务器上,实现负载的均衡分配。
- 动静分离:将静态文件和动态请求分开处理,提高网站的性能和响应速度。
个人简介
👋 您好,我是Jack轻舟,一位资深的Java技术开发者!座右铭:Technology makes the world a better place!.
🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发、数据治理、AIGC和最新技术趋势的地方。
🧠 作为一个 IT 技术爱好者,并且对Java、微服务、数据治理方向有浓厚的兴趣,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
💡 在我的博客上,为各位技术开发者分享Java核心概念、JVM 底层技术、微服务技术、领域驱动设计、MySQL等数据库管理、RabbitMQ等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
📖 敬请持关注我的博客,让我们共同追求技术卓越和成长。