nginx详细资料

news2024/10/7 2:24:25

nginx简介

1、nginx产生

        Nginx同Apache一样都是Web服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier ) URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通一句,通过HTTP协议提供各种网络服务

        然而,这些服务器在设计之初收到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个Web服务器有着各自鲜明的特点。 

        Apache的发展十七很长,而且是毫无争议的世界第一大服务器,他有着很多有点:稳定、开源、跨平台等等。

        他出现的时间太长了,他兴起的年代,互联网产业远远比不上现在。所以他被设计为一个重量级的。

        但是它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。

        操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。

        这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。

        俄罗斯的工程师lgor Sysoev,他在为Rambler Media工作期间,使用c语言开发了Nginx。

        Nginx作为Web服务器一直为Rambler Mdia 提供出色而又稳定的服务。然后呢,lgorSysoev将nginx代码开源,并且赋予自由软件许可证。

        基于一下几点:Nginx活了

        1.Nginx使用基于时间驱动架构,使得其可以支持数以百万级别的tcp连接。

        2.高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代)。

        3.Nginx是一个跨平台服务器,可以运行在Linux、Windows、FreeBSD、Solaris、AIX、Mac OS等操作系统上。

        4.这些优秀设计带来的极大稳定性

2、什么是 nginx 和可以做什么事情

        其特点是占有内存少,并发能力强

3、Nginx 作为 web 服务器

        

Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发

  • 正向代理

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

简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理

需要在客户端配置代理服务器进行指定网站访问

  • 反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。

我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

  • 负载均衡

增加服务器的数量,然后将请求分发到各个服务器上。将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器。

是客户端发送多个请求到服务器,服务器处理请求

  • 动静分离

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

  • nginx安装

安装nginx前,需要先安装其依赖软件,具体的有pcre-8.3.7.tar.gz, openssl-1.0.1t.tar.gz, zlib-1.2.8.tar.gz, nginx-1.11.1.tar.gz

1.nginx的http模块使用pcre来解析正则表达式,需要在linux上安装pcre库

2.nginx使用zlib对http包的内容进行gzip,需要在linux上安装安装zlib库

3.安装openssl库,让 nginx 支持 https(即在ssl协议上传输http)

安装:

1、安装pcre

上传源码压缩包,解压、编译、安装 三部曲。

(1)解压文件, 进入pcre目录,

(2)./configure 完成后,

(3)执行命令: make && make install

2、安装 openssl

下载OpenSSL的地址:

http://distfiles.macports.org/openssl/

(1)解压文件, 回到 openssl目录下,

(2)./configure 完成后,

(3)执行命令: make && make install

3、安装 zlib

(1)解压文件, 回到 zlib 目录下,

(2)./configure 完成后,

(3)执行命令: make && make install

4、安装 nginx

(1)解压文件, 回到 nginx 目录下,

(2)./configure 完成后,

(3)执行命令: make && make install

安装tar.gz的安装方式:

先解压压缩包:tar -zxvf 一般会生成一个soft目录

进入soft目录: 执行./configure命令为编译做好准备

执行make命令进行软件编译

执行make install完成安装

执行make clean删除安装时产生的临时文件

  • 运行nginx

·安装完nginx后,会在路径/usr/local下自动生成nginx文件夹

cd /usr/local/nginx

进入sbin文件夹,里面有两个文件:nginx 和 nginx.old

·执行命令:./nginx 即可启动nginx

·测试启动: ps -ef | grep nginx

·查看nginx默认端口(默认为80),使用网页的形式测试,(像Tomcat一样 ip:80)

·nginx的配置文件:cd /usr/local/nginx/conf 下的 nginx.conf

在windows系统中访问linux系统中的nginx,默认不能访问的,是防火墙的原因,需要关闭防火墙,开启访问的端口

  • nginx的常用命令和配置文件

  1. 常用命令:

使用nginx操作命令的前提:必须进入到nginx的自动生成目录的下/sbin文件夹下

Nginx有两个目录;一个是安装目录(可以自定义),一个是自动生成的目录(/usr/local/nginx)

命令:

启动nginx:./nginx

查看nginx版本号:./nginx -v

关闭nginx:./nginx -s stop

重新加载nginx:./nginx -s reload

  1. 配置文件:

/usr/local/nginx/conf/nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

nginx 配置文件有三部分组成

第一部分:全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。

比如上面第一行配置的:

worker_processes 1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。

第二部分:events块

比如上面的配置:

events {

worker_connections 1024;

}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024.

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http全局块、server 块。

http全局块

http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块

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

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

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

全局 server 块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。

location 块

一个 server 块可以配置多个 location 块。

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

  • nginx反向代理配置实例1

  1. 实现效果:在浏览器地址输入www.123.com,跳转到linux系统tomcat主页

  2. 准备工作:

  3. 在linux中安装tomcat:

tomcat 安装文件放到 liunx 系统中,解压

进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器

  1. 将8080端口对外开放:

添加开放的端口:firewall-cmd --add-port=8080/tcp --permanent

重启防火墙:systemctl restart firewalld

查看已开放的端口:firewall-cmd --list-all

  1. 在 windows 系统中通过浏览器访问 tomcat 服务器

通过ip:8080的方式验证tomcat

  1. 具体配置反向代理:

·第一步:在windows系统中的host文件进行域名和ip对应关系的配置:

添加内容在host文件中:

·第二步:在nginx进行请求转发的配置(反向代理配置):

修改nginx的配置文件,将sever块的listen默认为80,

server_name修改为208.208.128.122,

将下面location块的proxy_pass修改为http://127.0.0.1:8080

·进行测试:

如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故 访问该域名时会跳转到 127.0.0.1:8081 路径上

即实现在浏览器地址输入www.123.com,跳转到linux系统tomcat主页的效果

  • nginx反向代理配置实例二

  1. 实现效果

实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

nginx 监听端口为 8001,

访问 http://127.0.0.1:8001/edu/ 直接跳转到 127.0.0.1:8081

访问 http://127.0.0.1:8001/vod/ 直接跳转到 127.0.0.1:8082

  1. 准备工作

准备两个tomcat,一个端口是8081,一个端口是8082

需要注意的是:8002的tomcat需要修改三个端口号,分别是http协议的默认端口、http协议的默认端口、默认ajp协议的默认端口 如果不修改的话,8002的tomcat是无法启动的,因为8002的tomcat配置会和8001的冲突

修改后如下:

准备好测试页面

将端口开放

进行nginx反向代理配置:

可以看到,修改的是listen、server_name,两个location块,名字分别是vod和edu

进行测试

  • nginx实现负载均衡

在 nginx 的配置文件中进行负载均衡的配置:

可以看到,是在upstream myserver块中,增加了一个server

nginx 分配服务器策略:

负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式

a. 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

b. weight

weight 代表权重, 默认为 1,权重越高被分配的客户端越多

c. ip_hash

ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

d. fair(第三方)

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

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

相关文章

Vue自定义成功弹窗H5实现类似于小程序的效果

效果图: <div class="father"><div class="success-box" v-if="isSuccess"><img src="../../assets/insure/success-logo.png" alt=""><span>{{ successTitle }}</span></div> </d…

单片机之keil软件环境搭建

简介 Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案&#xff0c;通过一个集成开发环境&#xff08;μVision&#xff09;将这些部分组合在一起。     目前软件对中文的支持不友好&#xff0c;不建议安装网上的一些汉化包…

14.java集合

文章目录 概念Collection 接口概念示例 Iterator 迭代器基本操作&#xff1a;并发修改异常增强循环遍历数组&#xff1a;遍历集合&#xff1a;遍历字符串&#xff1a;限制 list接口ListIteratorArrayList创建 ArrayList&#xff1a;添加元素&#xff1a;获取元素&#xff1a;修…

瑞丽杂志引领潮流,VOSS眼镜概念店开启奢华新纪元

近日&#xff0c;由《瑞丽》杂志社举办的2023第4届瑞丽轻奢品牌大赛&#xff0c;以“轻奢•悦藏”为主题的大赛已圆满结束&#xff0c;VOSS眼镜荣获&#xff1a;2023瑞丽轻奢品牌大赛「轻奢时尚风格奖」&#xff0c;作为眼镜行业唯一获此奖项的品牌&#xff0c;VOSS眼镜对此表示…

仓储管理系统——软件工程报告(详细设计)④

详细设计 一、系统功能模块的划分 根据系统的功能性需求&#xff0c;本文将部队仓库管理系统分为以下六大模块&#xff1a;系统管理模 块、基础数据模块、出入库管理模块、库存管理模块、仓库信息管理模块、作业管理模 块&#xff0c;每个模块内部又分为很多小功能模块&#…

java数据结构与算法刷题-----LeetCode769. 最多能完成排序的块

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 这道题可以理解为&#xff0c;只能保证块内有序的情况下&#xf…

力扣 | 141. 环形链表

快慢指针的使用&#xff01; import java.util.HashSet; import java.util.Set;public class _141_linked_list_cycle {// 哈希查找// 时间复杂度&#xff1a;O(n)// 空间复杂度&#xff1a;O(n)public boolean hasCycle1(ListNode head) {Set<ListNode> set new HashSe…

2-SAT问题相关理论和算法

前言 SAT 问题简介 SAT是可满足性、适定性(Satisfiability)问题的简称。一般形式为k-适定性问题或k-可满足性问题&#xff0c;简称 k-SAT。 何为布尔可满足性问题&#xff1f;给定一条真值表达式&#xff0c;包含逻辑变量、逻辑与、逻辑或以及非运算符&#xff0c;如&#x…

uniapp app更新

uniapp app更新 这个版本要随之增加&#xff0c;不然刚更新时直接用app, 新包增加的那些页面跳转会有问题&#xff0c;不能跳新的页面 //app更新检测 updataApp(){const that this;uni.showLoading({title:加载中...})plus.runtime.getProperty(plus.runtime.appid, functio…

JS进阶-高阶技巧

深浅拷贝 首先浅拷贝和深拷贝只针对引用类型 • 浅拷贝 开发中我们经常需要复制一个对象。如果直接用赋值会有下面问题&#xff1a; 这好比有同学来pink老师这里拷视频&#xff0c;竟然用的是剪切…气人不 浅拷贝&#xff1a;拷贝的是地址 1. 拷贝对象&#xff1a;Object…

塑料透光率测定仪评估塑料质量

塑料透光率是指光线通过塑料材料的能力&#xff0c;是评估塑料质量的重要指标之一。透光率越高&#xff0c;塑料的质量通常越好。为了确保生产出的塑料制品具有良好的透光性&#xff0c;对塑料透光率的检测非常重要。 一、塑料透光率检测方法 塑料透光率检测通常采用两种方法…

苹果Find My市场需求火爆,伦茨科技ST17H6x芯片助力客户量产

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…

攻防世界WEB新手训练区

view_source 此题我愿称之为网安领域的hello world 查看网页源代码的方式一般有—— 右键->查看网页源代码F12->源代码/来源Ctrlu 随后可以再代码第17行处找到flag&#xff0c;至此迈入网安第一步。可喜可贺&#xff0c;可喜可贺... get_post 考察http的两种请求方式&…

Cesium数据加载

文章目录 0.引言1.影像加载1.1Bing地图1.2天地图1.3ArcGIS在线地图1.4高德地图1.5OSM影像1.6MapBox影像 2.OGC地图服务2.1WMS2.2WMTS2.3TMS 3.GeoJSON数据加载4.KML数据加载5.TIFF数据加载6.点云数据加载7.地形数据加载7.1在线地形数据加载7.2本地地形数据加载 8.倾斜摄影模型数…

Influxdb系列(一)influxdb2.7.x的部署安装

一、influxdb的介绍 InfluxDB 是一种时序数据库&#xff0c;时序数据库通常被用在监控场景&#xff0c;比如运维和 IOT&#xff08;物联网&#xff09;领域。这类数据库旨在存储时序数据并实时处理它们。 比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 In…

基于springboot+vue旅游网站

摘要 旅游网站的开发是一个综合性的项目&#xff0c;涉及到前端和后端的技术&#xff0c;而基于Spring Boot和Vue.js的组合是一种常见的选择&#xff0c;因为它们可以很好地配合&#xff0c;提供高效且现代化的开发体验。首先&#xff0c;我们使用Spring Boot作为后端框架。Spr…

《WebKit技术内幕》学习之十五(2):Web前端的未来

2 嵌入式应用模式 2.1 嵌入式模式 读者可能会奇怪本章重点表达的是Web应用和Web运行平台&#xff0c;为什么会介绍嵌入式模式&#xff08;Embedded Mode&#xff09;呢&#xff1f;这是因为很多Web运行平台是基于嵌入式模式的接口开发出来的&#xff0c;所以这里先解释一下什…

3ds Max宣传片怎么提升渲染速度?从硬件升级到云渲染,全面提升你的渲染速度!

在3ds Max中&#xff0c;渲染是一项耗时的任务&#xff0c;尤其是对于大型场景和复杂的动画。然而&#xff0c;通过一些优化策略和技巧&#xff0c;你可以显著加速渲染过程。以下是一些建议和技巧&#xff0c;帮助你提高3ds Max的渲染速度&#xff1a; 1.升级硬件&#xff1a; …

Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms

报错 Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {typeUNKNOWN, servers[{addressmangodb-m.cc.com:3717, typeUNKNOWN, stateCONNECTING, exception{com.mongodb.MongoSocketReadE…

H.264与H.265的主要差异

H.265仍然采用混合编解码&#xff0c;编解码结构域H.264基本一致&#xff0c; H.265与H.264的主要不同 编码块划分结构&#xff1a;采用CU (CodingUnit)、PU(PredictionUnit)和TU(TransformUnit)的递归结构。 并行工具&#xff1a;增加了Tile以及WPP等并行工具集以提高编码速…