如何学习和搭建Nginx

一、Nginx简介

Nginx是一个高性能的HTTP、反向代理服务,由俄罗斯人开发。其特点包括占有内存少、并发能力强,在同类网页服务器中表现优秀。Nginx的源代码以类BSD许可证的形式发布,因稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

NGINX 已成为 F5, Inc 的一员,是当前全球热门的开源项目 NGINX 背后的公司。F5 NGINX 提供云原生的、Kubernetes 友好的开源和商业解决方案,通过提供扩展性、可见性、安全性和治理功能,为至关重要的应用和 API 提供助力。

NGINX(读作:engine-x)是用于 Web 服务、反向代理、内容缓存、负载均衡、媒体流传输等场景的开源软件。NGINX 的创始人 Igor Sysoev 最初编写 NGINX 是为了解决 C10K 问题,如今,NGINX 已经成为全世界最流行的 web 服务器

二、准备依赖资源

  1. Nginx下载地址: nginx.org/en/download...

  2. 准备依赖包:在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的安装

  1. 准备Nginx安装包 在中间件安装包中或下载如下版本的nginx安装文件: nginx-1.20.1.tar.gz 将文件上传到目标Linux系统的/home/nginx/目录
  2. 执行安装命令:
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
  1. 查看是否启动成功:
arduino 复制代码
curl http://127.0.0.1

如上信息即启动成功。

  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的配置

  1. 配置文件位置 :Nginx的主要配置文件是nginx.conf,通常位于/usr/local/nginx/conf/etc/nginx目录下。

  2. 常用配置

    • worker_processes:指定工作进程数,一般设置为CPU核心数。
    • worker_connections:设置单个工作进程最大并发连接数。
    • events:配置事件驱动模型,如epoll、kqueue等。
    • http:配置HTTP相关参数,如sendfile、keepalive_timeout等。
    • server:配置虚拟主机,包括监听端口、域名解析等。
    • location:配置URL定位,如静态文件、动态请求等。
  3. 优化配置

    • 开启gzip压缩,提高传输效率。
    • 配置SSL,支持HTTPS访问。
    • 配置负载均衡,实现多服务器间的请求分发。

四、Nginx的应用场景

  1. 反向代理:作为Web服务器的前端,接收客户端的请求,并转发给后端的Web服务器。
  2. 负载均衡:将用户请求分发到多个后端服务器上,实现负载的均衡分配。
  3. 动静分离:将静态文件和动态请求分开处理,提高网站的性能和响应速度。

个人简介

👋 您好,我是Jack轻舟,一位资深的Java技术开发者!座右铭:Technology makes the world a better place!.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发、数据治理、AIGC和最新技术趋势的地方。

🧠 作为一个 IT 技术爱好者,并且对Java、微服务、数据治理方向有浓厚的兴趣,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,为各位技术开发者分享Java核心概念、JVM 底层技术、微服务技术、领域驱动设计、MySQL等数据库管理、RabbitMQ等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 敬请持关注我的博客,让我们共同追求技术卓越和成长。

相关推荐
孟里啥都有.30 分钟前
nginx重定向
运维·nginx
FlowingRiver1 小时前
nginx配置stream代理
运维·nginx
星殇曦落1 小时前
nginx的重定向(rewrite)
运维·nginx
俄罗斯牛栏山2 小时前
nginx的重定向(rewrite)
运维·nginx
周杰伦的稻香3 小时前
“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“
mysql·nginx·centos
yexiaoyex4 小时前
nginx的重定向(rewrite)
运维·nginx
lemons84017 小时前
nginx的重定向rewrite
运维·nginx
sunon_17 小时前
linux中 nginx+tomcat 部署方式 tomcat挂掉设置自动启动
linux·nginx·tomcat
TOMORROW6COME18 小时前
LVS+Nginx高可用集群--基础篇
运维·nginx·lvs
Hellc00721 小时前
OpenResty & Nginx:详细对比与部署指南
运维·nginx·openresty