Nginx_入门

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加

Nginx_入门


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

欢迎来到 Nginx 的世界!Nginx 是一款强大的 Web 服务器和反向代理服务器,被广泛应用于互联网上的众多网站和应用程序。

在这个博客中,我将带领你踏上学习 Nginx 的旅程,从入门开始,逐步深入了解这个令人惊叹的工具。

无论你是一个开发者、系统管理员,还是对 Web 服务器有兴趣的技术爱好者,Nginx 都能为你提供强大的功能和灵活性。通过学习 Nginx,你将能够更好地理解如何构建高性能、可靠的 Web 应用程序。

在接下来的博客文章中,我将为你介绍 Nginx 的基本概念、安装和配置方法,以及如何优化 Nginx 以获得更好的性能。

我希望这个博客能够成为你学习 Nginx 的起点,并为你提供有用的资源和实践经验。让我们一起探索 Nginx 的世界,释放其强大的潜力!如果你有任何问题或建议,请随时留言评论。现在,就让我们开始这段精彩的 Nginx 学习之旅吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、Nginx概述

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。Nginx 专为性能优化而开发,使用异步非阻塞事件驱动模型。

说了这么多,大家可能还是有点迷糊。举个例子,Nginx 服务器就像是一个交通指挥员,它负责接收和处理来自客户端(比如你的浏览器)的请求,并将这些请求转发给相应的服务器(比如网站的后端服务器)。

当你在浏览器中输入一个网址时,Nginx 服务器会接收到这个请求,并根据预设的规则,将其转发给合适的服务器。它可以根据请求的类型、URL、服务器的负载等因素来决定将请求发送到哪个服务器。

二、Nginx的应用场景

  • HTTP服务器:Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。
  • 反向代理:反向代理应该是Nginx使用最多的功能了,反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
  • 负载均衡:Nginx 支持多种负载均衡策略,如轮询、加权轮询、IP 哈希等,可以将请求均匀地分配给多个后端服务器,提高系统的并发处理能力。
  • 动静分离:动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

三、安装Nginx

环境准备

  • 确认网络可用
  • 确定yum可用
  • 确定关闭防火墙
  • 确认关闭SELinux

安装依赖库

bash 复制代码
yum -y install gcc make automake pcre-devel zlib zlib-devel openssl openssl-devel
  • gcc:编译依赖gcc环境
  • pcre:PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl 兼容的正则表达式库。
  • zlib:zlib库提供了很多种压缩和解压缩的方式,Nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
  • Openssl:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

下载/安装Nginx

普通安装Nginx

1.官网下载Nginx安装包,并上传到虚拟机,点击下载

2.创建存放源文件的文件夹

首先在目录/opt下创建apps目录,用于存放源文件以及解压后的文件

3.上传Nginx到步骤1创建的目录下

4.解压 Nginx

bash 复制代码
[root@node1 apps]# pwd
/opt/apps
[root@node1 apps]# ls
Nginx-1.20.1.tar.gz
[root@node1 apps]# tar -zxvf Nginx-1.20.1.tar.gz
[root@node1 apps]# cd  Nginx-1.20.1

5.进入到 Nginx 解压包目录/opt/apps/Nginx-1.20.1 目录中,查看 Nginx 的目录。各目录作用如下:

  • auto:存放 Nginx 自动安装的相关文件
  • conf:存放 Nginx 服务器配置文件
  • configure:命令,用于对即将安装的软件的配置,完成 makefile 编译文件的生成
  • contrib:存放由其他机构贡献的文档材料
  • html:存放 Nginx 欢迎页面
  • man:manual,手册,存放 Nginx 帮助文档
  • src:存放 Nginx 源码

6.使用 configure 命令可以生成makefile文件。

bash 复制代码
[root@node1 Nginx-1.20.1]# mkdir -p /var/temp/nginx/client
[root@node1 Nginx-1.20.1]# pwd
/opt/apps/nginx-1.20.1
[root@node1 Nginx-1.20.1]# ./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi

安装编译参数如下:

编译选项 作用
-prefix=/etc/Nginx 主目录
--sbin-path=/usr/sbin/Nginx 执行命令
--modules-path=/usr/lib64/Nginx/modules Nginx模块
--conf-path=/etc/Nginx/Nginx.conf Nginx配置文件
--error-log-path=/var/log/Nginx/error.log 错误日志
--http-log-path=/var/log/Nginx/access.log 访问日志
--pid-path=/var/run/Nginx.pid Nginx启动的pid
--lock-path=/var/run/Nginx.lock Nginx的锁
--http-client-body-temp-path=/var/cache/Nginx/client_temp 执行对应模块时,Nginx锁保留的临时性文件
--http-proxy-temp-path=/var/cache/Nginx/proxy_temp 指定作为代理服务器时,服务器响应报文的临时存放路径
--http-fastcgi-temp-path=/var/cache/Nginx/fastcgi_temp 指定了在运行 FastCGI 时临时文件的存储路径
--http-uwsgi-temp-path=/var/cache/Nginx/uwsgi_temp 指定了在运行 UWSGI(Unicorn Web Server Gateway Interface)时临时文件的存储路径
--http-scgi-temp-path=/var/cache/Nginx/scgi_temp
--user=Nginx 设定Nginx进程启动的用户
--group=Nginx 设定Nginx进程启动的用户组
--with-cc-opt=parameters 设置额外的参数将被添加到CFLAGS变量
--with-ld-opt=parameters 设置附加的参数,连接系统库

7.编译安装

bash 复制代码
make && make install

Docker安装Nginx

1.拉取官方的Nginx镜像

bash 复制代码
[root@localhost ~]# docker pull nginx

2.使用 Nginx 默认的配置来启动一个 Nginx 容器实例

bash 复制代码
[root@localhost ~]# docker run --rm --name nginx-test -p 8080:80 -d nginx

参数的含义如下 : --rm:容器终止运行后,自动删除容器文件。 --name nginx-test:容器的名字叫做Nginx-test,名字自己定义. -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口 -d:容器启动后,在后台运行

3.创建本地目录,用于存放Nginx的相关文件信息

bash 复制代码
mkdir -p /opt/nginx/www  /opt/nginx/conf

4.拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器ID可以查看 docker ps 命令输入中的第一列

bash 复制代码
docker cp 358354f206fd:/etc/nginx/nginx.conf /home/nginx/conf/
部署命令

使用该命令就不需要再映射本地目录到Nginx容器

bash 复制代码
docker run --rm -d -p 8081:80 --name nginx-test-web \
  -v /opt/nginx/www:/usr/share/nginx/html \
  -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  nginx

参数说明:

  • --rm:容器终止运行后,自动删除容器文件。
  • -p 8081:80: 将容器的 80 端口映射到主机的 8082 端口.
  • --name nginx-test-web:将容器命名为 Nginx-test-web
  • -v /home/Nginx/www:/usr/share/Nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/Nginx/html。
  • -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

四、目录介绍

conf目录

Nginx所有配置文件的目录,极其重要。在该目录中包含一个Nginx.conf配置文件。

html目录

Nginx的默认站点目录。

logs目录

存放Nginx的日志文件

sbin目录

Nginx命令的目录,如Nginx的启动命令。

五、Nginx启停服务

启动

bash 复制代码
./Nginx -h

参数说明:

  • -v : 打印版本号
  • -V : 打印版本号和配置
  • -t:测试配置正确性并退出
  • -q:测试配置时只显示错误
  • -s:向主进程发送信号
  • -p:指定Nginx服务器路径前缀
  • -c: 指定Nginx配置文件路径
  • -g: 指定Nginx附加配置文件路径

停止服务

快速停止,快速停止是指立即停止当前Nginx服务正在处理的所有网络请求,马上丢弃连接,停止工作。

bash 复制代码
Nginx -s stop   # 快速关闭

平缓停止,平缓停止是指允许Nginx服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作。

bash 复制代码
Nginx -s quit   # 等待工作进程处理完成后关闭

重启

更改Nginx服务器的配置和加入新模块后,如果希望当前的Nginx服务应用新的配置或使新模块生效,就需要重启Nginx服务。当然我们可以先关闭Nginx服务,然后使用新的Nginx配置文件重启服务。

bash 复制代码
Nginx -s reload  # 向主进程发送信号,重新加载配置文件,热重启
Nginx -s reopen # 重启 Nginx

总结

提示:这里对文章进行总结:

希望这篇博客对你了解 Nginx 有所帮助!如果你有任何问题或想要进一步讨论,欢迎在评论中留言。

相关推荐
墨鸦_Cormorant10 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
一只爱撸猫的程序猿10 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
DC_BLOG14 小时前
Linux-Nginx虚拟主机
linux·运维·nginx
Stara051114 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
oushaojun218 小时前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
ladymorgana19 小时前
【Nginx从入门到精通】05-安装部署-虚拟机不能上网简单排错
网络·nginx·智能路由器
苹果醋31 天前
Redis | 第3章 对象《Redis设计与实现》
java·运维·spring boot·mysql·nginx
yangshuo12812 天前
Docker-Compose 快速部署安装 Nginx 或其他应用
运维·nginx·docker
.Ayang2 天前
【vulhub】nginx解析漏洞(nginx_parsing_vulnerability)
计算机网络·nginx·安全·web安全·网络安全·系统安全·网络攻击模型
小韩加油呀2 天前
nginx配置不缓存资源
nginx·缓存