【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 系统
的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广州华锐互动VRAR:VR教学楼地震模拟体验增强学生防震减灾意识

在当今社会,地震作为一种自然灾害,给人们的生活带来了巨大的威胁。特别是在学校这样的集体场所,一旦发生地震,后果将不堪设想。因此,加强校园安全教育,提高师生的防震减灾意识和能力,已经成为了…

Python编程技巧 – 使用字符串(Strings)

Python编程技巧 – 使用字符串(Strings) Python Programming Essentials – Using Strings 本文简要介绍如何使用字符串,来进行Python编程。字符串有很多用途,包括输出结果、反馈状态、数据处理以及切片和文本筛选等 1. 字符串 字符串(St…

Python学习之——正则表达式

Python学习之——正则表达式 参考常见用法re.matchre.search分组re.subre.findall使用编译后的正则表达式 实例 参考 Python3 正则表达式 正则表达式 - 简介 简单使用:python re.match函数的使用 分组捕获:Python正则表达式之re.match() Python通过re…

2023.11.18html中如何使用input/button进行网页跳转

2023.11.18html中如何使用input/button进行网页跳转 在做网页时有时会用元素,有时会用元素进行form表单操作或者网页跳转,但是用bootstrap时两种元素会出现不同的样式,为了样式一致,有时需要使用这两种元素相互实现其常用功能。 …

大数据学习(22)-spark

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…

详解自动化测试之 Selenium

目录 1. 什么是自动化 2.自动化测试的分类 3. selenium(web 自动化测试工具) 1)选择 selenium 的原因 2)环境部署 3)什么是驱动? 4. 一个简单的自动化例子 5.selenium 常用方法 5.1 查找页面元素&…

基于SSM的北海旅游网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

nodejs微信小程序-实验室上机管理系统的设计与实现-安卓-python-PHP-计算机毕业设计

用户:管理员、教师、学生 基础功能:管理课表、管理机房情况、预约机房预约;权限不同,预约类型不同,教师可选课堂预约和个人;课堂预约。 目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 …

2023.11.18 每日一题(AI自生成应用)【C++】【Python】【Java】【Go】 动态时间序列分析

目录 一、编程挑战:动态时间序列分析 实际应用: 实现提示: 二、实现 1. C 2. Python 3. JAVA 4. Go 一、编程挑战:动态时间序列分析 问题描述: 假设你是一名软件工程师,需要开发一个应用来分析和预…

asp.net心理健康管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目

一、源码特点 asp.net 心理健康管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 系统视频链接 https://www.bilibili.com/video/BV19w411H7P4/ 二、功能介绍 本系统使用Microsoft Visual Studio…

初识Linux:目录的创建销毁

目录 ​编辑 提示:以下指令均在Xshell 7 中进行 零、桌面的本质 💻 扩展🎇: 一、cd指令: 1、cd - : 2、cd ~: 重命名命令:alias 二、stat指令 冷知识: 如果…

SpringCloud总结

注:本文并不涉及具体功能是怎么实现的,而只是微服务技术栈的整体总结和理解。 目录 一.基础概念--认识微服务 1.单体架构 2.分布式架构 3.微服务 4.SpringCloud 二.服务的拆分原则 三.RestTemplate--实现不同服务之间的通信与远程调用 四.Eurek…

代码随想录算法训练营第二十八天| 78 子集 90 子集|| 93 复原IP地址

78 子集 由题意可知数组中的元素互不相同&#xff0c;所以在dfs中我们可以将当前的path直接加入到res中。 class Solution {List<List<Integer>>res new ArrayList<>();List<Integer>path new LinkedList<>();public List<List<Integer…

系列一、JVM概述

一、概述 1.1、Java发展中的重大事件 1.2、虚拟机 vs Java虚拟机 1.2.1、虚拟机 1.2.2、Java虚拟机 1.2.3、Java虚拟机的作用 Java虚拟机是二进制字节码的运行环境&#xff0c;负责装载字节码到其内部&#xff0c;解释/编译为对应平台上的机器指令指令。每一条Java指令&#…

鸿蒙:使用Stack、ContentTable、Flex等组件和布局实现一个显示界面

效果展示 一.概述 跟随官网继续HarmonyOS学习 本篇博文实现一个食物详情页的开发Demo 通过这个开发过程学习如何使用容器组件Stack、Flex和基本组件Image、Text&#xff0c;构建用户自定义组件&#xff0c;完成图文并茂的食物介绍 二.构建Stack布局 1.食物名称 创建Stack…

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十四)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

【Dubbo】Dubbo负载均衡实现解析

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

Android 13 - Media框架(14)- OpenMax(二)

这一节我们将来解析 media.codec 这个 HIDL service 究竟提供了什么服务&#xff0c;服务是如何启动的。 1、main 函数 我们先来看 frameworks/av/services/mediacodec/main_codecservice.cpp&#xff1a; int main(int argc __unused, char** argv) {strcpy(argv[0], "…

广州华锐互动VRAR:利用VR开展刑事案件公安取证培训,沉浸式体验提升实战能力

随着科技的飞速发展&#xff0c;虚拟现实(VR)技术为我们的生活和工作带来了前所未有的便利。近年来&#xff0c;VR技术在刑事案件公安取证培训中的应用逐渐显现出其独特优势。通过模拟真实的犯罪现场&#xff0c;VR技术为学员提供了沉浸式的体验&#xff0c;使他们在安全的环境…

WebSocket协议详解

前言 WebSocket协议是一种在单个TCP连接上进行全双工通信的应用层协议&#xff0c;位于OSI模型的应用层。它允许服务器主动向客户端推送信息&#xff0c;也可以允许客户端主动向服务器发送信息。WebSocket协议的出现主要是为了解决基于HTTP/1.x的Web应用无法实现服务端向客户端…