nginx基本概念和安装

一. 简介

        1.1 是什么

  • nginx是一个高性能的HTTP和反向代理web服务器,是一款轻量级的Web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行,特点是占有内存少,并发能力强。
  • ngnix专为性能优化而开发,能够支持高达50000个并发连接数的响应。ngnix选择了epoll and kqueue作为开发模型。

        2.2 能实现哪些功能

        nginx具有丰富的配置功能,以满足不同的需求。

  • 虚拟主机:nginx可以配置多个虚拟主机,使得一个服务器可以托管多个网站或应用程序。

  • 反向代理:可以将客户端请求转发到后端服务器,实现负载均衡和高可用性。

  • 缓存:支持HTTP缓存,可以缓存静态文件,减轻后端服务器的负载,提高访问速度

  • SSL/TLS支持:可以配置HTTPS协议,保证数据传输的安全性。

  • URL重写:可以通过配置重写规则,实现URL的重定向和转发。

  • Gzip压缩:支持对响应内容进行压缩,减小传输数据的大小,提高加载速度。

  • 访问限制:可以配置IP白名单、黑名单或使用HTTP Basic Authentication对访问进行限制。

  • 日志记录:支持将请求和错误信息记录到日志文件中,方便排查问题和进行统计分析。

  • 缓存控制:可以配置缓存策略,设置缓存时间、缓存大小等参数。

  • 动态模块支持:nginx可以通过动态模块进行功能扩展,例如Lua脚本、HTTP/2支持等。

        这些只是nginx配置功能的一部分,还有很多其它的配置选项可以根据具体需求进行配置。

        2.3 特性

  • nginx具有很高的稳定性。其它HTTP服务器,当遇到访问峰值,或者有人恶意发起慢速连接时,很可能会导致服务器物理内存的消耗频繁交换,失去响应,只能重启服务器。而ngnix采取了分阶段资源分配技术,使得它的CPU和内存占用率很低。ngnix官方表示保持10000个内有活动的连接,nginx只占用2.5M内存。
  • ngnix支持热部署。它的启动非常容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动,还可以在不间断服务的情况下,对软件版本进行升级。
  • ngnix采用master-slave模型。能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O阻塞延迟,当采用select/poll调用时,还可以限制每个进程的连接数。

二. 概念

        2.1 正向代理

        如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

        客户端要求正向代理服务器向目的服务器要某种资源。客户端需要配置代理服务器,通过代理服务器进行互联网访问。

        2.2 反向代理

        其实客户端对代理服务器是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再放回给客户端,此时方向代理服务器和目标服务器对外就是一个服务器。暴露的是代理服务器的地址,隐藏了真实服务器IP地址。

        2.3 负载均衡

        在早期的单一系统使用的架构为客户端发送多个请求给服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将处理结果返回给客户端,这种架构适用于并发量比较少的情况。当并发量比较大时,可能会造成服务器崩溃。

        我们首先可能想到的是升级服务器配置。比如提高CPU执行频率,加大内存等。但是我们知道摩尔定律的日益失效,硬件性能提升已经不能满足日益提升的需求。

        这个时候集群的概念就产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。将原先请求集中到单个服务器的情况改为将请求分发到多个服务器上,即将负载分发到不同服务器上,这就是负载均衡。

        2.4 动静分离

        为了加快网站的解析速度,可以把动态网页和静态网页由不同服务器来解析,加快解析速度,降低原来单个服务器的压力。

         三. 安装

        在安装ngnix之前需要安装一些相关依赖。

  • 安装gcc

        gcc是linux下的编译器,用来编译ngnix。

yum -y install gcc

        查看gcc版本:

gcc -v

  • 安装pcre,pcre-devel

        pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。

yum install -y pcre pcre-devel
  • 安装zlib

        zlib库提供了很多压缩和解压缩方式,ngnix使用zlib对http包的内容进行解压缩。

yum install -y zlib zlib-devel
  • 安装openssl

        openssl是进行信息加解密的,是web安全通信的基石。

yum install -y openssl openssl-devel
  • 下载ngnix安装包

        进入ngnix官网下载最新稳定版本:nginx: download 

        下载到安装包后,进行解压。

        在linux系统中,进入到解压后的ngnix目录,执行下面命令:

#检测你的安装平台的目标特征。比如检测你的编译器等
./configure#编译ngnix
make#安装ngnix
make install
  •  运行ngnix

进入到ngnix编译后的文件目录:

cd /usr/local/nginx/sbin#运行ngnix
./ngnix
  •  查看是否运行成功

使用命令:

netstat -nltp

         可以看到ngnix默认监听在80端口。

         在浏览器访问服务器上的ngnix:服务器公网ip:ngnix端口

        如果访问不到,可能是防火墙的问题

方案一:直接关闭防火墙

service firewalld status #查看状态
service firewalld stop #关闭

 方案二:配置防火墙80端口可以访问

#查看防火墙信息: 
firewall-cmd --list-all
#添加端口号: 
sudo firewall-cmd --add-port=80/tcp --permanent
#重启防火墙: 
firewall-cmd --reload
#再查看防火墙信息:
firewall-cmd --list-all
  • 常用命令

        前提需要进入到ngnix目录:/usr/local/ngnix/sbin

#查看ngnix版本号
./ngnix -v#运行ngnix
./ngnix#关闭ngnix
./ngnix -s stop#重新加载ngnix
./ngnix -s reload

        四. ngnix配置文件

        配置文件及位置:

/usr/local/ngnix/conf/ngnix.conf

        4.1 组成部分

        ngnix配置文件有三部分组成:

  • 第一部分:全局块

        从配置文件开始到events之间的内容,主要会设置一些影响ngnix服务器整体运行的配置指令

如:

worker_processes  1;这是nginx服务器并发处理服务的关键配置,值越大,可以支持的并发处理量也就越多,但是会受到硬件、软件等设备的制约
  • 第二部分:events块

        主要影响ngnix服务器与用户的网络连接。

如:

表示ngnix的最大连接数
events {worker_connections  1024;
}
  •  第三部分:http块,配置最频繁的部分,代理,缓存和日志定义等绝大多数功能和第三方配置都在这里, http块也分为http全局块和server块。

        http全局块是http里面到server里的内容。包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等。

        server块和虚拟主机有关。虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网硬件成本。

        每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。

        而每个server块也分为全局server块和多个location块。

                1. 全局server块:最常见的配置是本虚拟机主机的监听配置和本虚拟机主机的名称或IP配置。

                 2. location块:一个server可以配置多个location块。主要作用是基于ngnix服务器接收到的请求字符串(例如:server_name/uri-string),对虚拟主机的名称(也可以是ip别名)之外的字符串(例如:前面的/url-string)进行匹配,对待定的请求进行处理,地址定向,数据缓存和应答控制的功能,还有许多第三方模块的配置也在这里进行。

http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

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

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

相关文章

如何利用桌面工作计划软件制定自己的to do清单?

在我们的日常生活和工作中,经常会遇到各种各样的任务需要完成。如果没有一个明确的计划和安排,我们可能会感到混乱和压力,而桌面工作计划软件可以帮助我们更好地管理和规划我们的时间和任务。今天,我们就来聊聊如何利用这些工具&a…

Linux 一键部署Mysql 8.4.1 LTS

mysql 前言 MySQL 是一个基于 SQL(Structured Query Language)的数据库系统,SQL 是一种用于访问和管理数据库的标准语言。MySQL 以其高性能、稳定性和易用性而闻名,它被广泛应用于各种场景,包括: Web 应用程序:许多动态网站和内容管理系统(如 WordPress)使用 MySQL 存…

红日靶场----(三)1.漏洞利用

上期已经信息收集阶段已经完成,接下来是漏洞利用。 靶场思路 通过信息收集得到两个吧靶场的思路 1、http://192.168.195.33/phpmyadmin/(数据库的管理界面) root/root 2、http://192.168.195.33/yxcms/index.php?radmin/index/login&am…

LDR6282-显示器:从技术革新到视觉盛宴

显示器,作为我们日常工作和娱乐生活中不可或缺的一部分,承载着将虚拟世界呈现为现实图像的重要使命。它不仅是我们与电子设备交互的桥梁,更是我们感知信息、享受视觉盛宴的重要窗口。显示器在各个领域的应用也越来越广泛。在办公领域&#xf…

【前端速通系列|第二篇】Vue3前置知识

文章目录 1.前言2.包管理工具npm2.1下载node.js2.2配置 npm 镜像源2.3 npm 常用命令 3.Vite构建工具4.Vue3组件化5.Vue3运行原理 1.前言 本系列文章旨在帮助大家快速上手前端开发。 2.包管理工具npm npm 是 node.js中进行 包管理 的工具. 类似于Java中的Maven。 2.1下载nod…

创建React 项目的几种方式

①.react自带脚手架 使用步骤:(自动) 1、下载 npm i create-react-app -g 2、创建项目命令: create-react-app 项目名称 ②.Vite构建工具创建react步骤:(推荐) 方法一: 1、yarn cr…

【笔记】dbeaver导出数据库结构+数据 再导入其他数据库

导出: 导入 然后将语句粘贴进去 会有报错 选全部跳过 然后就全部添加成功了 虽然我不知道为什么报错 但是能加进去数据结构和数据都在就无所谓了 第二个版本 DBeaver导出sql脚本,执行sql脚本-CSDN博客 通过工具 DBeaver操作 MySQL导入备份的 sql 报错…

kali安装vulhub遇到的问题及解决方法(docker及docker镜像源更换)

kali安装vulhub: 提示:项目地址 https://github.com/vulhub/vulhub 项目安装: git clone https://github.com/vulhub/vulhub.git 安装docker 提示:普通用户请使用sudo: 首先安装 https 协议、CA 证书 apt-get in…

【机器学习】使用决策树分类器预测汽车安全性的研究与分析

文章目录 一、决策树算法简介决策树的结构分类和回归树 (CART)决策树算法术语决策树算法直觉 二、属性选择度量信息增益熵 基尼指数计算分割基尼指数的步骤 三、决策树算法中的过度拟合避免过度拟合的方法 四、导入库和数据可视化探索性数据分析重命名列名查看数据集的总结信息…

我的AI音乐梦:ChatGPT帮我做专辑

​🌈个人主页:前端青山 🔥系列专栏:AI篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来ChatGPT帮我做音乐专辑 嘿,朋友们! 想象一下,如果有个超级聪明的机器人能帮你写…

Linux Mac 安装Higress 平替 Spring Cloud Gateway

Linux Mac 安装Higress 平替 Spring Cloud Gateway Higress是什么?传统网关分类Higress定位下载安装包执行安装命令执行脚本 安装成功打开管理界面使用方法configure.shreset.shstartup.shshutdown.shstatus.shlogs.sh Higress官网 Higress是什么? Higress是基于阿里内部的…

java LogUtil输出日志打日志的class文件内具体方法和行号

最近琢磨怎么把日志打的更清晰,方便查找问题,又不需要在每个class内都创建Logger对象,还带上不同的颜色做区分,简直不要太爽。利用堆栈的方向顺序拿到日志的class问题。看效果,直接上代码。 1、demo test 2、输出效果…

将vue项目整合到springboot项目中并在阿里云上运行

第一步&#xff0c;使用springboot中的thymeleaf模板引擎 导入依赖 <!-- thymeleaf 模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 在r…

Golang:数据科学领域中的高性能并发编程新星

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 并发性能的卓越表现📝 系统级工具的便捷性📝 语言设计的简洁性📝 强类型系统的严格性📝 版本兼容性的稳定性📝 内置工具的全面性⚓️ 相关链接 ⚓️📖 介绍 📖 在数据科学和机器学习的广阔天地…

力扣-回溯法

何为回溯法&#xff1f; 在搜索到某一节点的时候&#xff0c;如果我们发现目前的节点&#xff08;及其子节点&#xff09;并不是需求目标时&#xff0c;我们回退到原来的节点继续搜索&#xff0c;并且把在目前节点修改的状态还原。 记住两个小诀窍&#xff0c;一是按引用传状态…

什么是面向对象编程

什么是面向对象编程&#xff1f;&#xff08;OOP&#xff09; ● 面向对象编程是一种基于对象概念的编程范式&#xff1b;&#xff08;所谓的编程范式&#xff0c;就是代码风格&#xff0c;我们“如何”编写和组织代码&#xff09;&#xff1b; ● 我们使用对象来模拟&#xf…

[C++] STL :stackqueue详解 及 模拟实现

标题&#xff1a;[C] STL &#xff1a;stack&&queue详解 水墨不写bug 目录 &#xff08;一&#xff09;stack简介 &#xff08;二&#xff09;queue简介 &#xff08;三&#xff09;容器适配器 &#xff08;四&#xff09;stack和queue的模拟实现 /*** …

LabVIEW从测试曲线中提取特征值

在LabVIEW中开发用于从测试曲线中提取特征值的功能时&#xff0c;可以考虑以下几点&#xff1a; 数据采集与处理&#xff1a; 确保你能够有效地采集和处理测试曲线数据。这可能涉及使用DAQ模块或其他数据采集设备来获取曲线数据&#xff0c;并在LabVIEW中进行处理和分析。 特…

lvs集群、NAT模式和DR模式、keepalive

目录 lvs集群概念 集群的类型&#xff1a;三种类型 系统可靠性指标 lvs集群中的术语 lvs的工作方式 NAT模式 lvs的工具 算法 实验 数据流向 步骤 一 、调度器配置&#xff08;test1 192.168.233.10&#xff09; 二、RS配置&#xff08;nginx1和nginx2&#xff09;…

Python那些优质可视化工具!

作者&#xff1a;Lty美丽人生 https://blog.csdn.net/weixin_44208569 本次分享10个适用于多个学科的Python数据可视化库&#xff0c;其中有名气很大的也有鲜为人知的&#xff01; 1、matplotlib 两个直方图 matplotlib 是Python可视化程序库的泰斗。经过十几年它任然是Pytho…