nginx基础1——工作原理、安装配置、命令参数

文章目录

  • 一、基本了解
    • 1.1 特性优点
    • 1.2 功能应用
    • 1.3 工作模块分类
    • 1.4 模块配置方法
  • 二、工作原理
  • 三、安装与配置
  • 四、常用命令

一、基本了解

nginx简介:

  1. nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
  2. nginx由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。
  3. nginx第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
  4. nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.1 特性优点

nginx特性:

  1. 在高连接并发的情况下,nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应。
  2. 使用epoll and kqueue作为开发模型。
  3. nginx作为负载均衡服务器:nginx既可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务。
  4. nginx采用C进行编写,不论系统资源开销还是CPU使用效率都比Perlbal要好很多

nginx优点:

  1. 高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数。
  2. 内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)。
  3. 配置文件非常简单:风格跟程序一样通俗易懂。
  4. 成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
  5. 支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。
  6. 内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问。
  7. 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。
  8. 稳定性高:用于反向代理,宕机的概率微乎其微。
  9. 模块化设计:模块可以动态编译。
  10. 外围支持好:文档全,二次开发和模块较多。
  11. 支持热部署:可以不停机重载配置文件。
  12. 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

1.2 功能应用

nginx基本功能:

  1. 静态资源的web服务器,能缓存打开的文件描述符。
  2. http、smtp、pop3协议的反向代理服务器。
  3. 缓存加速、负载均衡。
  4. 支持FastCGI(fpm,LNMP),uWSGI(Python)等。
  5. 模块化(非DSO机制),过滤器zip、SSI及图像的大小调整。
  6. 支持SSL。

nginx扩展功能:

  1. 基于名称和IP的虚拟主机。
  2. 支持keepalive长连接。
  3. 支持平滑升级。
  4. 定制访问日志、支持使用日志缓冲区提高日志存储性能。
  5. 支持URL重写。
  6. 支持路径别名。
  7. 支持基于IP及用户的访问控制。
  8. 支持速率限制,支持并发数限制。

nginx应用类别:

  1. 使用nginx结合FastCGI运行PHP、JSP、Perl等程序。
  2. 使用nginx作反向代理、负载均衡、规则过滤。
  3. 使用nginx运行静态HTML网页、图片。
  4. nginx与其他新技术的结合应用。

1.3 工作模块分类

基本了解:

  • nginx由内核和模块组成。内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
  • location是nginx配置文件中的一个参数,指定网页访问的根地址,location参数后面指定要访问的网页文件路径。
  • nginx的模块从结构上分为核心模块、基础模块和第三方模块

模块分类:

  • 核心模块:HTTP模块(访问网站)、EVENT模块(记录事件)、MAIL模块(发送邮件)等。
  • 基本模块:HTTP Access模块(访问)、HTTP FastCGI模块(lnmp)、HTTP Proxy模块(反向代理)、HTTP Rewrite模块(重定向URL)。
  • 第三方模块:HTTP Upstream模块、Request Hash模块、Notice模块和HTTP Access Key模块。

注意事项:

  1. 基本模块在编译时默认是开启状态,不能被禁用。
  2. 基本模块包括:
    • 核心模块(提供基本功能和指令),常见核心模块指令大部分是放置在配置文件的顶部,需要顶行写,不能有空格和括号包含关系。
    • 事件模块(Nginx内配置网络使用的能力),常见的events(事件)模块指令,大部分是放置在配置文件的顶部。
    • 配置模块(提供包含机制),指主配置文件中可以通过引用其他路径下的配置文件参数实现功能,可以简化配置文件,方便阅读。
功能模块分类作用
Proxies(代理器模块)就是nginx的HTTP Upstream之类的模块,主要与后端服务比如fastcgi等操作交互,实现服务代理和负载均衡等功能。
Handlers(处理器模块)此类模块直接处理请求,并进行输出内容和修改headers信息等操作。handlers处理器模块一般只能有一个。
Filters(过滤器模块)此类模块主要对其他处理器模块输出的内容进行修改操作,最后由nginx输出。

1.4 模块配置方法

  • 官方核心模块配置文档

1.如下图。这个核心模块参数可以配置在配置文件中的events中的括号里。
在这里插入图片描述
2.如下图。这个配置参数只能单独写一行,且顶行写,不能存在任何一个括号里。
在这里插入图片描述
3.如下图。这个配置参数可以配置在main, http, mail, stream, server, location任意位置。

  • main:对本机所有网站生效。
  • http:对所有server网站生效。
  • server:对某一个网站生效。
  • location:对某一个网站中的某一个访问页面生效。

在这里插入图片描述

二、工作原理

基本了解:

  • nginx的模块直接被编译进nginx,属于静态编译。若要使用其他模块功能时,再添加模块编译,属于动态编译。
  • 启动nginx后,nginx的模块被自动加载,与Apache不一样,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。
  • 在解析配置文件时,nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。

nginx进程架构:

  1. 启动nginx时,会启动一个Master进程,这个进程不处理任何客户端的请求,主要用来产生worker线程。
  2. 每个worker线程下有多个工作模块,根据不同的客户端请求,各个工作模块分别对应处理一个请求。
  3. 当客户端请求web网站时,实际上是请求master进程产生的worker线程中的工作模块。
    在这里插入图片描述

HTTP请求和响应的过程:

  1. 客户端发出请求,经过负载均衡高可用代理服务器后,到达某一台nginx服务器。
  2. nginx程序收到请求后,选择一个处理器模块进行处理,再通过过滤器模块生成请求内容,再继续宁内容处理。
  3. 最后将处理结果发送给客户端。
    在这里插入图片描述

WEB服务请求步骤:

  1. 客户都安访问网站url,比如访问的是80端口,就需要建立tcp连接进行三次握手。
  2. 建立连接后,nginx服务端收到客户都安请求,开始调用处理器模块处理请求,根据客户端的请求去寻找资源。
  3. 找到资源后,就开始输出结果,建立响应报文,最后发送给客户端。
  4. 最后,nginx服务端记录整个过程的日志。
    在这里插入图片描述

三、安装与配置

  • 下载地址

1.创建系统用户nginx。

useradd -r -M -s /sbin/nologin nginx

2.安装依赖包。

yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
yum -y groups mark install 'Development Tools'

3.创建日志存放目录。

mkdir -p /var/log/nginx
chown -R nginx.nginx /var/log/nginx

4.下载nginx安装包,,解压,编译安装。

wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0//编译模块。
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log//安装。
make -j $(nproc) && make install

5.配置环境变量,启动nginx服务。

echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
source /etc/profile.d/nginx.sh//启动。
nginx

6.访问web网页。

在这里插入图片描述

四、常用命令

参数释义
-t检查配置文件语法
-v输出nginx的版本
-c指定配置文件的路径,启动nginx时可以指定其他配置文件。
-s发送服务控制信号,可选值有stop、quit、reopen、reload。
-V编译时使用的参数

1.检查使用的配置文件语法是否正确。
在这里插入图片描述

2.查看nginx已编译安装的模块。若要继续添加模块,则需要把已安装的模块一起写进去编译。
在这里插入图片描述
3.重启nginx服务,一般都是先停止,再重新启动。
在这里插入图片描述
4.重新读取配置文件。

nginx -s reload

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

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

相关文章

前端学习——ajax (Day1)

AJAX 概念和 axios 使用 axios 使用 练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享&#xff0c;具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

ChatGPT漫谈(一)

最近一款“聊天机器人”迅速爆火,它叫ChatGPT,全称Chat Generative Pre-trained Transformer,对话数据预先训练生成的Transformer模型,"主要特色"是能够学习和理解人类的语言。 ChatGPT起源于聊天机器人(chat bot),它是一种使用聊天接口与用户交互的机器人,它可…

网络知识整合——Web页面请求的历程

Web页面请求的历程 内部涉及知识&#xff1a;一、准备:DHCP、UDP、IP 和以太网二、仍在准备&#xff1a;DNS和ARP三、仍在准备&#xff1a;域内路由选择到DNS服务器四、Web客户-服务器交互&#xff1a;TCP和HTTP五、HTTP请求响应格式Requests部分Responses 部分 下载一个Web页面…

ES6迭代器、Set、Map集合和async异步函数

目录 迭代器 Iterator 的作用 Iterator 的遍历过程 Set Map集合 map和对象区别? async异步函数 迭代器 迭代器&#xff08;Iterator&#xff09;就是这样一种机制。它是一种接口&#xff0c;为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口&…

平安养老险党委书记、董事长甘为民:做实、做多、做大养老三支柱

随着人口老龄化趋势加剧&#xff0c;中国养老金融市场呈现出巨大的潜力&#xff0c;逐步迈入养老新时代。 平安养老险党委书记、董事长甘为民表示&#xff0c;养老保险公司要想在市场中展现出独特的市场影响力&#xff0c;需要聚焦养老主业&#xff0c;发挥自身专业特色&#…

介绍性能压力测试的重要性

在当今数字化时代&#xff0c;软件和应用程序的性能对于用户体验和业务成功至关重要。为了确保系统在面临高负载和压力时能够正常运行&#xff0c;性能压力测试成为一项不可或缺的活动。本文将介绍性能压力测试的重要性。 性能压力测试是一种通过模拟实际场景中的负荷和用户访问…

商业隔断装修中的材料选择有何注意事项?

在商业隔断装修中&#xff0c;材料选择非常重要。以下是一些注意事项&#xff1a; 1. 需要考虑材料的质量和耐用性。商业场所通常需要经历更加频繁的使用和更大的人流量&#xff0c;因此所选材料应具有较高的耐磨和耐用性&#xff0c;能够经受住日常使用和商业环境带来的压力。…

2023-7-19-第二十式迭代器模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

React native 已有项目升级兼容web

基础 概念 | webpack 中文文档 | webpack 中文文档 | webpack 中文网 深入理解Webpack及Babel的使用 - 掘金 Introduction to React Native for Web // React Native for Web Webpack 是一个现代的 JavaScript 应用程序的静态模块打包工具&#xff0c;它将应用程序所依赖的各…

【C++】STL---vector基本用法介绍

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

设计模式之代理模式

写在前面 1&#xff1a;介绍 1.1&#xff1a;什么时候使用代理模式 当我们有对象因为安全性&#xff0c;不能直接对外暴露&#xff0c;或者是需要对对象的操作本身记录日志等信息时就可以考虑使用代理模式&#xff0c; 1.2&#xff1a;UML类图 享元设计模式&#xff0c;包…

五十、Spring

1.Spring概述 1.1 Spring是什么 Spring是分层的 Java SE/EE应用 full-stack(全栈式) 轻量级开源框架。 提供了表现层 SpringMVC和持久层 Spring JDBC Template以及 业务层 事务管理等众多的企业级应用 技术&#xff0c;还能整合开源世界众多著名的第三方框架和类库&#xf…

4个顶级WooCommerce商城多站点库存同步WordPress插件

经营几家网上商店是令人兴奋的。但是&#xff0c;这也是一项艰巨的工作&#xff0c;尤其是当您意识到需要同步这些商店的库存时。好消息是&#xff0c;有 WooCommerce 多站点库存同步插件和选项可以加快速度。 WooCommerce 多站点网络可让您将所有在线商店无缝地安置在一个屋檐…

【Tauri + React 实战】VCluster - 了解技术选型与开发环境配置

VCluster A React Tauri App as visualizer of apps cluster on windows. 背景介绍 VCluster是一个在开发环境下&#xff0c;用以对一系列应用集群&#xff08;如分布式、微服务&#xff09;进行可视化管理的桌面应用程序&#xff0c;目标是实现类似 docker-compose 那样的集…

TabBar和TabBarView实现顶部滑动导航

home.dart子页面主要代码&#xff1a; import package:flutter/material.dart;class HomePage extends StatefulWidget {const HomePage({super.key});overrideState<HomePage> createState() > _HomePageState(); }class _HomePageState extends State<HomePage&…

windows环境hadoop报错‘D:\Program‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

Hadoop版本为2.7.3&#xff0c;在环境配置好后&#xff0c;检查hadoop安装版本&#xff0c;报如标题所示错误&#xff0c;尝试网上主流的几种方法均无效。 错误&#xff1a;windows环境hadoop报错’D:\Program’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 错误方…

TCP/IP网络编程 第十一章:进程间通信

进程间通信的基本概念 在上一章中我们讲到&#xff0c;进程自身有独立的内存空间&#xff0c;进程之间是相互独立的存在。因此在没有任何机制的支持下&#xff0c;我们可以将进程看作相互孤立的存在。 但是进程之间在某种程度上也是要“交流”的&#xff0c;下面正式介绍进程…

在uni中使用vue3写h5的pdf导出

先安装依赖 npm install --save html2canvas npm install jspdf --save 把dom转canvas&#xff0c;屏幕截图基于 DOM&#xff0c;因此可能不是 100% 准确到真实表示&#xff0c;因为它不会制作实际的屏幕截图&#xff0c;而是根据页面上可用的信息构建屏幕截图。 components…

linux 一键安装docker docker-compose

# 环境 deploy.sh docker-19.03.9.tgz docker-compose-linux-x86_64 tar -zxvf docker-19.03.9.tgz mv docker-19.03.9 docker cp docker/* /usr/bin/ touch /etc/systemd/system/docker.service cat << EOG > /etc/systemd/system/docker.service [Unit] Descripti…