【项目】小帽外卖(十四)

2023-10-27

小帽外卖

第十四章 Nginx

一、Nginx 概述

1. Nginx 介绍

  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。
  • Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
  • 官网:https://nginx.org/

2. Nginx下载和安装

  • 可以到Nginx官方网站下载Nginx的安装包,地址为:https://nginx.org/en/download.html
    在这里插入图片描述
  • 安装过程:
    1、安装依赖包 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
    2、下载Nginx安装包wget https://nginx.org/download/nginx-1.16.1.tar.gz
    3、解压 tar -zxvf nginx-1.16.1.tar.gz
    4、cd nginx-1.16.1
    5、./configure --prefix=/usr/local/nginx
    6、make && make install

3. Nginx目录结构

  • 安装完Nginx后,我们先来熟悉一下Nginx的目录结构,如右图:
    • 重点目录/文件:
      • conf/nginx.conf nginx配置文件
      • html 存放静态文件(html、CSS、Js等)
      • logs 日志目录,存放日志文件
      • sbin/nginx 二进制文件,用于启动、停止Nginx服务
        在这里插入图片描述

二、Nginx命令

1. 查看版本

  • 查看Nginx版本可以使用命令:
    • ./nginx -v
      在这里插入图片描述

2. 检查配置文件正确性

  • 在启动Nginx服务之前,可以先检查一下conf/nginx.conf文件配置的是否有错误,命令如下:
    • ./nginx -t
      在这里插入图片描述

3. 启动和停止

# 启动Nginx服务使用如下命令:
./nginx

# 停止Nginx服务使用如下命令:
./nginx -s stop

# 启动完成后可以查看Nginx进程:
ps -ef | grep nginx

4. 重新加载配置文件

# 当修改Nginx配置文件后,需要重新加载才能生效,可以使用下面命令重新加载配置文件:
./nginx -s reload

三、Nginx配置文件结构

1. 整体结构介绍

  • Nginx配置文件(conf/nginx.conf)整体分为三部分:
    • 全局块 和Nginx运行相关的全局配置
    • events块 和网络连接相关的配置
    • http块 代理、缓存、日志记录、虚拟主机配置
      • http全局块
      • Server块
        • Server全局块
        • location块
  • 注意:http块中可以配置多个Server块,每个Server块中可以
    配置多个location块。
    在这里插入图片描述

四、Nginx具体应用

1. 部署静态资源

  • Nginx可以作为静态web服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。
  • 相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。
  • 将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。
server {
    listen 80;	#监听端口	
    server_name localhost;	服务器名称
    location / {	#匹配客户端请求url
        root html;	#指定静态资源根目录
        index index.html;	#指定默认首页
    }
}

2. 反向代理

  • 正向代理
    • 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
      正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
    • 正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。
      在这里插入图片描述
  • 反向代理
    • 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接
      访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。
    • 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
      在这里插入图片描述
  • 配置反向代理
server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.138.101:8080; #反向代理配置,将请求转发到指定服务
    }
}

在这里插入图片描述

3. 负载均衡

  • 早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。
    • 应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据
    • 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
      在这里插入图片描述
  • 配置负载均衡
upstream targetserver{	#upstream指令可以定义一组服务器
    server 192.168.138.101:8080 weight=10;
    server 192.168.138.101:8081 weight=5;
}
server {
    listen       8080;
    server_name  localhost;
    location / {
        proxy_pass http://targetserver;
    }
}
  • 负载均衡策略:
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【项目】小帽外卖(十四) 的相关文章

  • Unix 命令列出包含字符串但*不*包含另一个字符串的文件

    如何递归查看包含一个字符串且不包含另一个字符串的文件列表 另外 我的意思是评估文件的文本 而不是文件名 结论 根据评论 我最终使用了 find name html exec grep lR base maps xargs grep L ba
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • 阻止 ingress-nginx 负载均衡器上的特定路径

    我有许多指向入口控制器 IP 的域 我想阻止所有域 站点的 特定路径 有没有办法做到这一点 我可以用nginx ingress kubernetes io configuration snippet 对于每个站点 但正在寻找同时处理所有站点
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp

随机推荐

  • vue-cli使用指南

    目录 vue全家桶 技术栈 使用vue cli搭建Vue项目 单页的编写 axios的使用 vuex的使用 vuex中数据的保留时间 axios的全局拦截 axios的跨域问题 全局常量 使用Mock模拟后端接口返回数据 嵌套路由 路由守卫
  • 95-38-030-Buffer-Java NIO中-关于DirectBuffer,HeapBuffer的疑问

    文章目录 1 说明 2 疑问 3 RednaxelaFX 1 说明 本文摘要 https www zhihu com question 57374068 2 疑问 Java NIO中 关于DirectBuffer HeapBuffer的疑问
  • CUDA的几种Synchronize

    首先对这三个函数做一下解释 cudaDeviceSynchronize 等待所有线程都处理完成 kernel function处理完成 用在cpu的c code中 cudaThreadSynchronize 功能和cudaDeviceSyn
  • Pycharm的使用技巧与效率提升

    总第010篇 本文主要梳理了pycharm在使用过程中的一些技巧 便于提升工作效率 pycharm主要分为两个版本 一个是专业版本 此版本功能强大 主要是为python和web开发者准备的 需要付费 另一个是社区版本 比较轻量级 主要是为p
  • 读别人写的代码 VS 自己写代码

    概述 专业程序员非常重要的一项技能是读别人写的代码 这项技能甚至比自己写代码更重要 分析 这让我想到很多程序员讨厌去阅读代码 来接受它吧 人人都喜欢编写代码 写代码是很有乐趣的事 但阅读代码却是一种困难的工作 它不仅仅繁重 而且很无聊 让我
  • 使用Docker进行模型部署

    文章目录 1 思路 2 实现步骤 2 1 数据 模型准备 2 2 镜像制作 2 3 使用 1 思路 因为多数公司正式集群都不能使用公网环境 对于模型部署比较麻烦 所以想这在公网环境下完成模型调试 然后根据相关环境和参数直接制作一个docke
  • C++中static_cast/const_cast/dynamic_cast/reinterpret_cast的区别和使用

    C风格的强制转换较简单 如将float a转换为int b 则可以这样 b int a 或者b int a C 类型转换分为隐式类型转换和显示类型转换 隐式类型转换又称为标准转换 包括以下几种情况 1 算术转换 在混合类型的算术表达式中 最
  • gsonformat java代码_插件GsonFormat快速實現JavaBean

    寫在前面的話 本文章只適合使用AndroidStudio的小伙伴觀看 還在糾結eclipse的小伙伴趕緊洗洗睡吧 最近看見一篇快速實現javaBean的屎丟丟插件 這是一個根據JSONObject格式的字符串 自動生成實體類參數 如果想要使
  • windows编程中wParam和lParam消息

    windows编程中wParam和lParam消息 1 WM PAINT消息 LOWORD lParam 是客户区的宽 HIWORD lParam 是客户区的高 2 滚动条WM VSCROLL或WM HSCROLL消息 LOWORD wPa
  • 【Vim】Vim 常用编辑操作

    目录 正则表达式 vim 命令 vim的工作模式 撤销修改 重做与保存 光标移动命令 文本插入操作 文本删除操作 文本复制 剪切与粘贴 文本的修改与替换 多窗口操作 正则表达式 简单地说 正则表达式是一种符号表示法 用于识别文本模式 在某种
  • 神经网络中epoch、batch、batch_size、epoch、iteration理解

    1 epoch 当一个完整的数据集通过神经网络一次并且返回一次的过程称为一个epoch 然而 当一个epoch对于计算机太过庞大时 就需要把它分成多个小块 2 batch 在不能将数据一次性通过神经网络的适合 就需要将数据集分成几个batc
  • 记录服务器上,不定时出现io.lettuce.core.RedisCommandTimeoutException: Command timed out after xxx millisecond(s)

    记录服务器上 不定时出现io lettuce core RedisCommandTimeoutException Command timed out after 12 millisecond s 日志 org springframework
  • E--释怀的RT--2023河南萌新联赛第(二)场:河南工业大学

    示例1 输入 5 0 1 0 0 10 输出 4 说明 前四个方格被最后一个心岩照亮 示例2 输入 5 0 1 0 0 1 输出 3 说明 第一个方格和第三个方格被第二个格子的心岩照亮 第四个方格被第五个格子的心岩照亮 一共有三个格子被照亮
  • SQLZOO习题(我的错题)

    SQLZOO习题 目录 SQLZOO习题 一 All the vowels 参考答案 备注 二 Nobel Quiz 解释 三 Knights of the realm 答案 备注 四 Chemistry and Physics last
  • shell转义,单引号与双引号,反撇号

    http www cnblogs com mydomain archive 2011 10 15 2213017 html 1 转义 单引号和双引号都能关闭shell对特殊字符的处理 不同的是 双引号没有单引号严格 单引号关闭所有有特殊作用
  • 我们的那些故事(写给1987—1990年出生的同学,希望您能够看看)

    花开无声 岁月无痕 突然回首 人生的旅途已经走了四分之一 我们这一辈 也就是96 97年开始上小学 02年上初中 05年上高中 07 08 09年上大学的 12年或者13年毕业的 我们知道的太多 看到了太多 听到了太多 新的 旧的 保守的
  • linux 查看内存 udimm rdimm,服务器UDIMM、LRDIMM、RDIMM三种内存如何区别

    随着应用程序的不断增长 内存被迫承担着更大压力 目前不管是服务器还是PC领域 DDR4内存技术依旧是主流 由于DDR4采用并行传输 为保证并行数据能有效传输 必须在内存条上下功夫 而在服务器领域 目前使用的内存条类型 DIMM 主要有三种
  • 关于STM32通用定时器更新事件中断

    定时器3中断服务程序 void TIM3 IRQHandler void if TIM3 gt SR 0X0001 产生更新事件 LED1 LED1 LED0 LED0 TIM3 gt SR 1 lt lt 0 清除中断标志位 通用定时器中
  • iOS常用类库

    ios 常用第三方类库 分享类型 游戏开发相关 http blog csdn net wstarx article details 6317779 http iosdeveloper diandian com post 2011 05 21
  • 【项目】小帽外卖(十四)

    小帽外卖 第十四章 Nginx 一 Nginx 概述 1 Nginx 介绍 Nginx是一款轻量级的Web 服务器 反向代理服务器及电子邮件 IMAP POP3 代理服务器 其特点是占有内存少 并发能力强 事实上nginx的并发能力在同类型