当前位置: 首页 > news >正文

【NGINX--1】基础知识

1、在 Debian/Ubuntu 上安装 NGINX

在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。
更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包:

apt-get update
apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring

下载并保存 NGINX 签名密钥:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件:

OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/${OS} ${RELEASE} nginx" | tee /etc/apt/sources.list.d/nginx.list

再次更新软件包信息,然后安装 NGINX:

apt-get update
apt-get install -y nginx 
nginx

详解
此次提供的命令可指示高级打包工具(APT)软件包管理系统使用官方 NGINX 软件包仓库。NGINX GPG 软件包签名密钥已下载并保存至文件系统的某个位置,以供 APT 使用。为 APT 提供签名密钥有助于 APT 系统验证仓库中的软件包。lsb_release 命令用于自动确定操作系统和版本名称,用户可以在所有 Debian 或 Ubuntu 发布版本中使用这些指令。apt-get update 命令指示 APT 系统从其已知的仓库中刷新软件包列表,此后您便可以从官方 NGINX 仓库安装 NGINX 开源版。安装后,最后一个命令会启动NGINX。

2、在 RedHat/CentOS 上安装 NGINX

在 RedHat 或 CentOS 上安装 NGINX 开源版。
创建一个名为 /etc/yum.repos.d/nginx.repo 的文件,其中包含以下内容:

[nginx] 
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ 
gpgcheck=0
enabled=1

修改文件,将 URL 中间的 OS 替换为 rhel 或 centos,具体取决于您的发行版本。分别将版本 7.x 或 8.x 的 OSRELEASE 替换为 7 或 8。然后运行以下命令:

yum -y install nginx 
systemctl enable nginx 
systemctl start nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp 
firewall-cmd --reload

详解
刚刚为此解决方案创建的文件将指示 YUM 软件包管理系统使用官方 NGINX 开源版软件包仓库。后面的命令将从官方仓库安装 NGINX 开源版,指示 systemd 在启动时启用 NGINX,并告知它立即启动。防火墙命令为 TCP 协议打开端口 80,这是 HTTP 的默认端口。最后一个命令重新加载防火墙,以提交更改。

3、安装 NGINX Plus

安装 NGINX Plus。
请访问 http://cs.nginx.com/repo_setup。从下拉菜单中选择您要将 NGINX Plus 安装到哪个操作系统,然后按照说明进行操作。其安装说明与开源解决方案类似,但是您需要安装一个证书,以便对 NGINX Plus 仓库进行身份验证。
详解
NGINX 会及时更新这个仓库安装指南和 NGINX Plus 安装说明。这些说明因您的操作系统和版本而略有不同,但都有一个共同点:您必须从 NGINX 门户获取证书和密钥并提供给您的系统,以便对 NGINX Plus 仓库进行身份验证。

4、验证安装

验证 NGINX 是否安装成功并检查版本。
您可以使用以下命令验证 NGINX 是否安装成功并检查其版本:

$ nginx -v
nginx version: nginx/1.21.3

如本例所示,响应显示了版本。
您可以使用以下命令确认 NGINX 是否正在运行:

$ ps -ef | grep nginx
root 1738 1 0 19:54 ? 00:00:00 nginx: master process
nginx 1739 1738 0 19:54 ? 00:00:00 nginx: worker process

ps 命令列出了正在运行的进程。通过将该命令导入到 grep 中,您可以在输出中搜索特定词。此示例使用 grep 搜索 nginx。结果显示有两个正在运行的进程:master 和worker。如果 NGINX 正在运行中,您将始终可以看到一个 master 以及一个或多个worker 进程。请注意,master 进程以 root 身份运行,因为 NGINX 只有使用最高权限才能正常运行。

要验证 NGINX 能否正确返回请求,请使用浏览器向您的机器发出请求或使用 curl。发送请求时,请使用机器的 IP 地址或主机名。如果安装在本地,您可以使用 localhost,如下所示:

curl localhost

您将看到 NGINX 欢迎页面默认的 HTML 站点。

5、关键文件、目录和命令

了解重要的 NGINX 目录和命令。
NGINX 文件和目录

/etc/nginx/
/etc/nginx/ 目录是 NGINX 服务器的默认配置根,您可以从中找到指示 NGINX 如何运行的配置文件。/etc/nginx/nginx.conf
/etc/nginx/nginx.conf 文件是 NGINX 服务使用的默认配置入口点。此配置文件能够为 worker 进程、调优、日志记录、动态模块的加载以及对其他 NGINX 配置文件的引用设置全局设置。在默认配置中,/etc/nginx/nginx.conf 文件包括顶层 http 代码块,也就是上下文,它提供了下述目录中的所有配置文件。/etc/nginx/conf.d/
/etc/nginx/conf.d/ 目录包含默认的 HTTP 服务器配置文件,其中以 .conf 结尾的文件都包含在 /etc/nginx/nginx.conf 文件的顶层 http 代码块中。最佳实践是利用include 语句并以这种方式组织配置,从而保持配置文件的简洁。在某些软件包仓库中,此文件夹被命名为 sites-enabled,配置文件链接到 site-available 文件夹;此惯例已不再使用。/var/log/nginx/
/var/log/nginx/ 目录是 NGINX 的默认日志位置,您可以从中找到一个 access.log文件和 error.log 文件。访问日志包含 NGINX 服务的每条请求的条目。如果启用了debug 模块,则错误日志文件包含错误事件和调试信息。

NGINX 命令

nginx -h
显示 NGINX 帮助菜单。nginx -v
显示 NGINX 版本。nginx -V
显示 NGINX 版本、build 信息和配置参数,这些参数显示了 NGINX 二进制文件中内置的模块。nginx -t
测试 NGINX 配置。nginx -T
测试 NGINX 配置并将验证后的配置打印到屏幕上。此命令在寻求支持时很有用。nginx -s signal
-s 标记向 NGINX master 进程发送信号。您可以发送 stop、quit、reload 和reopen 等信号。stop 信号可立即停止 NGINX 进程。quit 信号会在完成当前正在处理的请求后停止 NGINX 进程。reload 信号可重新加载配置。reopen 信号指示NGINX 重新打开日志文件。

6、提供静态内容

使用 NGINX 提供静态内容。
使用以下 NGINX 配置示例覆盖位于 /etc/nginx/conf.d/default.conf 的默认 HTTP 服务器配置:

server {listen 80 default_server;server_name www.example.com;location / {root /usr/share/nginx/html;# alias /usr/share/nginx/html;index index.html index.htm;}
}

详解
此配置通过 HTTP 在端口 80 上从目录 /usr/share/nginx/html/ 提供静态文件。第一行配置定义了一个新的 server 代码块,这为 NGINX 定义了一个需要侦听的新上下文。第二行指示 NGINX 侦听端口 80,default_server 参数指示 NGINX 使用此服务器作为端口 80 的默认上下文。listen 指令也可以使用一系列端口。server_name 指令定义了主机名或应定向到此服务器的请求的名称。如果配置没有将此上下文定义为 default_server,那么只有当 HTTP 主机请求头与提供给 server_name 指令的值相匹配时,NGINX 才会将请求定向到这台服务器。如果您还没有要使用的域名,则可以通过设置default_server 上下文省略 server_name 指令。

location 代码块根据 URL 中的路径定义配置。路径或域之后的部分 URL 被称为统一资源标识符(URI)。理想情况下,NGINX 会将请求的 URI 匹配到一个 location 代码块。示例使用了 / 匹配所有请求。root 指令向 NGINX 显示了为给定上下文提供内容时应在何处查找静态文件。在查找请求的文件时,请求的 URI 会附加到 root 指令的值。如果我们为 location 指令提供了 URI 前缀,那么除非我们使用 alias 指令(而非 root),否则该前缀将包含在附加路径中。location 指令能够匹配一系列广泛的表达式。有关更多信息,请访问下方“其他参考资料”中的链接。最后,index 指令为 NGINX 提供了一个默认文件或要检查的文件列表,以防 URI 中没有提供进一步的路径。

参考资料
NGINX HTTP location 指令文档

7、优雅重载

在保证不丢包的情况下重新加载配置。
通过使用 NGINX 的 reload 方法,您可以在不中止服务器的情况下有条不紊地重载配置:

nginx -s reload

此示例使用 NGINX 二进制文件向 master 进程发送信号,从而达到重载 NGINX 系统
的目的。

相关文章:

【NGINX--1】基础知识

1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

小米路由器AX1800降级后的SSH登录和关墙等命令

​​​​​​​​​​​​​​​​​​​​​http://192.168.31.1/cgi-bin/luci/;stok429aaa9c7f05ee7d0816a00257b8414a/api/misystem/set_config_iotdev?bssidXiaomi&user_idlongdike&ssid-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20s%…...

5-什么是猴子补丁,有什么用途?什么是反射,python中如何使用反射?http和https的区别?

1 什么是猴子补丁,有什么用途 **解释**1 Python猴子补丁(Monkey Patch)是一种在运行时动态修改代码的技术。通在不修改源代码的情况下,改变代码的执行方式或增加功能2 Monkey Patching是在 运行时(run time) 动态替换属性(attrib…...

深信服AC应用控制技术

拓扑图 目录 拓扑图 一.上班时间不允许使用qq(假设上班时间是上午9到12,下午14到18) 1.新增上班时间不允许使用qq访问权限策略 2.将策略应用到组,例如修仙部 3.验证 上班时间发现登录不了 下班时间可以登录 二.上班时间不允许访问视频网站(假设上班时…...

全新云开发工具箱:融合多项功能的微信小程序源码解决方案

全新云开发工具箱:融合多项功能的微信小程序源码解决方案 这款微信小程序源码提供了超过40个功能,集合了各种实用工具,成为一款全能工具箱。这些功能包括证件照制作、垃圾分类查询、个性签名制作、二维码生成、文字九宫格、手持弹幕、照片压…...

Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用

文章目录 Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用()1.概念2.流程3.bctest.c3.1 注册服务,打开binder驱动3.2 获取服务 4.binder_call Android跨进程通信,IPC&#xf…...

数据结构【DS】栈

共享栈 共享栈的目的是什么? 目的:有效利用存储空间。 共享栈的存取数据时间复杂度为? 存取数据时间复杂度为O(1) 共享栈如何判空?如何判满? 两个栈的栈顶指针都指向栈顶元素,𝑡𝑜𝑝…...

提高视频性能的 5 种方法

摆脱共享托管计划 如果您的网站每月收到数千名访问者,那么现在是时候放弃许多企业家和小型企业开始使用的共享托管计划了。在启动网站时选择廉价的托管计划是可以理解的,因为此类计划通常足以使用一年或更长时间,而不会影响性能。 在共享托…...

python有哪些高级的技术

Python作为一种功能强大且灵活的编程语言,具有许多高级技术和功能。以下是一些Python中常见的高级技术: 函数式编程:Python支持函数式编程范式,包括高阶函数、匿名函数(lambda函数)、闭包、以及针对序列的函…...

系列五、怎么查看默认的垃圾收集器是哪个?

一、怎么查看默认的垃圾收集器是哪个 java -XX:PrintCommandLineFlags -version...

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制AI助手——PPT大纲助手

随着人工智能技术的不断发展,AI助手在各行各业中扮演着越来越重要的角色。在商业领域,PPT演示是一种常见的沟通方式,而定制化的PPT大纲助手能够极大地提高PPT制作效率和质量。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和私有知识库,构建一款高效的PPT大纲助手…...

浅谈基于云计算的环境智能监控系统

随着经济的飞速发展,环境污染也越来越严重,环境监控成为了政府与社会关注的焦点。本文提出了一种基于云计算的环境智能监控系统——EasyCVR,该系统综合应用了传感器、云计算、大数据、人工智能等技术,具有实时、准确、高效的监控能…...

向量机SVM代码实现

支持向量机(SVM, Support Vector Machines)是一种广泛应用于分类、回归、甚至是异常检测的监督学习算法。自从Vapnik和Chervonenkis在1995年首次提出,SVM算法就在机器学习领域赢得了巨大的声誉。这部分因为其基于几何和统计理论的坚实数学基础…...

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍模数芯片ADC0809介绍通过模数芯片ADC0809把电压模…...

16. @PostConstruct注解和开关原理(验证码开关、IP开关)

1►PostConstruct注解 PostConstruct是java自带的注解,会在java项目启动的时候先执行下面的方法 2►开关原理(验证码开关) 我们的项目具有验证码功能,旧版不支持关闭,新版已经支持关闭了。 我们打开页面“参数管…...

uniapp+vue+Springboot 公司网站0~1搭建 前端前期设计篇

原型图 client https://www.xiaopiu.com/h5/byId?typeproject&id653bc791940bbb14e4feeecf admin 客户端 apph5 页面 首页展示 经典用户案例轮播图设计师轮播图 经典用户案例 经典案例搜索详情经典案例详情 设计师查询(待定) 后台管理 ​ …...

MFC 对话框

目录 一、对话款基本认识 二、对话框项目创建 三、控件操作 四、对话框创建和显示 模态对话框 非模态对话框 五、动态创建按钮 六、访问控件 控件添加控制变量 访问对话框 操作对话框 SendMessage() 七、对话框伸缩功能实现 八、对话框小项目-逃跑按钮 九、小项…...

关于node安装和nvm安装的问题

node 1.已经自定义路径安装了node,但是在cmd输入node -v显示不是内部命令 路径问题:确保 Node.js 已经被添加到了系统的环境变量 PATH 中。PATH 环境变量包含了操作系统用来查找命令的位置。你可以通过以下步骤检查 Node.js 是否已被添加到 PATH&#x…...

react 手机端 rc-table列隐藏(根据相关条件是否隐藏)、实现图片上传操作

最近公司某一项目的手机端,新增需求:table中的附件要可以编辑,并且是在特定条件下可编辑,其他仅做展示效果。 查阅官方文档,没有发现是否隐藏这一属性,通过css控制样式感觉也比较麻烦,后面发现可…...

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】三维重建

目录 前言 几个高频面试题目 “基于RGB-D相机的三维重建"和传统的SFM和SLAM算法有什么区别?...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...