首页 > 系统相关 >Nginx知识总结

Nginx知识总结

时间:2023-04-02 13:31:57浏览次数:32  
标签:总结 配置 tomcat nginx 知识 worker server Nginx 服务器


1、什么的nginx?

Nginx是高性能的HTTP和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,由报告表明能支持高达50000哥并发连接数。在实际的使用中,tomcat大约能支持500个并发连接数,nginx大约能支持5000个并发连接数

2.1、正向代理

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

Nginx知识总结_tomcat

2.2、反向代理 

客户端将请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据,在返回给客户端。在客户端看来,反向代理服务器和目标服务器就是一个服务器,暴露给客户端的就是代理服务器地址,隐藏了真实服务器IP地址。

Nginx知识总结_服务器_02

3、负载均衡

由于网站的访问并发量太大,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器,将原先请求集中到单个服务器上的情况改为分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

Nginx知识总结_nginx_03

但是有一个问题,反向代理服务器要怎样分发给服务器才能使得性能最高呢?是平均分配吗?如果服务器的性能不一样怎么办?这时候就需要了解负载均衡的算法了。我集中总结了负载均衡的算法:javascript:void(0)

4、动静分离

为了加快网站的解析速度,可以把动态资源(比如jsp,servlet等)和静态资源(比如html,css等)由不同的服务器来解析,加快解析速度。降低原理单个服务器的压力。

Nginx知识总结_tomcat_04

5、nginx.conf配置文件

无论nginx安装在windows还是linux,其配置文件都在nginx目录下的conf目录下。

Nginx知识总结_服务器_05

配置文件中#开头的,均为注释内容。

nginx.conf可以分为三部分:

5.1、全局块

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

比如上面第一行配置的:
worker_processes  1;

5.2、events块

events {
    worker_connections  1024;
}
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,
常用的设置包括是否开启对多 work process
下的网络连接进行序列化,是否允许同时接收多个网络连接,
选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。
上述例子就表示每个 work process 支持的最大连接数为 1024.
这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

5.3、http块

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

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

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

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

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

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

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

    include       mime.types;
    default_type  application/octet-stream;


    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;
        }

    }

}

6、nginx配置实例-反向代理实例1

实现效果:

使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080(tomcat服务器)

过程分析:

Nginx知识总结_服务器_06

具体配置:

1、在linux下开启tomcat
进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器
(
    windows下输入ip:8080看是否能访问到。
    无法访问的原因:
        1、ip地址错误
            在linux下输入ifconfig查看ip地址
        2、未开发8080端口
            可以关闭linux的防火墙
            也可以直接设置-开发8080端口
            具体做法参考:https://blog.csdn.net/qq_42391248/article/details/105415581
 )

2、配置window下的hosts文件
    hosts文件地址在C:\Windows\System32\drivers\etc
    在最下面加上 ip地址 www.123.com
    比如:192.168.163.130 www.123.com
(
    如果不能修改(权限不够),就开启修改的权限。
        右键hosts,点击属性-->安全-->选中组或用户名里的Users-->编辑
                        --->选中组或用户名里的Users--->勾选下面的修改权限--->确认
 )
完成之后,可以测试以下,windows下输入www.123.com:8080看是否能访问到tomcat。


3、配置nginx.conf
    server_name填你的ip地址
    在location下加:proxy_pass http://127.0.0.1:8080;
(这个配置使得nginx代理tomcat)

4、启动nginx
    cd /usr/local/nginx/sbin
    ./nginx
5、测试
    windows下输入www.123.com
    如果没有配置host文件,就输入nginx的服务器地址,也能看到tomcat

                     

                                                

Nginx知识总结_tomcat_07

 

7、nginx配置实例-反向代理实例2

实现效果:

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中nginx 监听端口为 9001,
访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081
访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8082

配置步骤:

1、开启两个tomcat服务器
2、在两个tomcat里面webapps目录中分别创建edu和vod文件夹,分别放置两个页面
3、配置nginx
4、开发端口或关闭防火墙

Nginx知识总结_nginx_08

8、nginx配置实例-负载均衡实例

实现效果:

浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080和 8081 端口中

配置步骤:

1、准备两台 tomcat 服务器,一台 8080,一台 8081
2、在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面 a.html,用于测试
3、nginx 的配置文件中进行负载均衡的配置

    在http全局块中配置:
        upstream myserver{
            server 192.168.163.130:8080;
            server 192.168.163.130:8081;
        }
    在server的location下配置:
        proxy_pass http://myserver

ps:负载均衡策略默认的是轮询

负载均衡策略:
    weight配置:

        upstream server_pool{
            server 192.168.163.130:8080 weight=10;
            server 192.168.163.130:8081 weight=10;
        }
    Ip_hash配置:
        
        upstream server_pool{
            ip_hash
            server 192.168.163.130:8080;
            server 192.168.163.130:8081;
        }

测试:

192.168.163.130/edu/a.html
每次刷新页面,就会分别给两个服务器发请求

9、Keepalived+Nginx 高可用集群(主从模式)

Nginx知识总结_服务器_09

10、Keepalived+Nginx 高可用集群(双主模式)

Nginx知识总结_tomcat_10

11、Nginx原理

11.1、master和worker

运行nginx后,实际上有两个进程,一个master,一个是worker。master不代理服务器,主要是管理worker。

Nginx知识总结_服务器_11

11.2、worker如何进行工作的

worker首先要去争抢请求,而非轮询。争抢到了请求,再去反向代理到tomcat。

Nginx知识总结_服务器_12

11.3、一个 master 和多个 woker 有好处

1)可以使用nginx -s reload 热部署,利用nginx进行热部署操作。

2)每个worker是独立的进程,如果有其中的一个woker出现问题,
其他woker独立的,继续进行争抢,实现请求过程,不会造成服务器中断。

11.4、设置多少个 woker 合适

worker 数和服务器的 cpu 数相等是最为适宜的

11.5、连接数 worker_connection

第一个:发送请求,占用了 worker 的几个连接数?

    答案:2 或者 4 个(client和worker两个连接,worker和tomcat两个连接)



第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?

    4*1024/2或者4*1024/4

    普通的静态访问最大并发数是: worker_connections * worker_processes /2,
    而如果是 HTTP 作 为反向代理来说,
    最大并发数量应该是 worker_connections *worker_processes/4。

 

标签:总结,配置,tomcat,nginx,知识,worker,server,Nginx,服务器
From: https://blog.51cto.com/wonderking/6164716

相关文章

  • 光纤光缆的基础知识
      光 纤  光纤,完整名称叫做光导纤维,英文名是OPTICFIBER。它是一种由玻璃或塑料制成的纤维,可作为光传导工具。光纤的主要用途,是通信。目前通信用的光纤,基本上是石英系光纤,其主要成分是高纯度石英玻璃,即二氧化硅(SiO2)。光纤通信系统,就是利用光纤来传......
  • JavaIO流:主要知识点
    JavaIO流:主要知识点File类介绍:java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关。File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必......
  • 对电子逻辑知识的认知
      电子逻辑构成有序的结构,并非杂乱无章。  早期由电子硬件通过数字模拟,来实现布尔逻辑。正:高压电表示1;负:高压电表示0。  后由小规模集成电路实现基本的逻辑功能,如与或非等。  再后来由中小规模集成电路组成大规模集成电路来实现复杂的逻辑,组合逻辑电路有:全加器,编码......
  • 【THM】Windows Fundamentals 2(Windows基础知识2)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/windowsfundamentals2x0x本文介绍:本文所涉及的内容是Windows基础模块的第2部分,了解有关系统配置、UAC设置、资源监控、Windows注册表等更多信息。简介在WindowsFundamentals1中,我们已经介绍了Windows的桌面......
  • 析构函数知识
     通过allocator类的学习我们知道,销毁一个数据(调用析构函数)并不一定会进行内存释放。所以关键字delete才是内存释放的关键(delete将对象析构和内存释放组合在一起)。 ......
  • Android Camera相关知识整理
    View相关原文:SerfaceView与TextureView的区别区别:Sureface有自己的Serface(由屏幕显示内容合成器(screencompositor)所管理的原生缓冲器的句柄)是一个单独的View,会在WMS中创建单独的窗口,有自己的渲染进程,不受UI层的控制,因此不能与其他UI组合在一起,不能进行平移缩放等变换。而Tex......
  • C++ Primer Plus基础知识部分快速通关
    目录第二章第三章第四章数组字符串结构体共用体枚举指针指针、数组与指针算术变量存储方式数组替代第五章递增递减运算符指针与递增递减逗号运算符循环循环与文本输入文件尾(EOF)条件重要性实现第六章逻辑运算符相关字符函数库第七章基础知识函数与数组使用数组区间的函数指针与con......
  • 总结所有的排序方式
    一、插入排序就是从左到右遍历,然后看看这个数是否比前面的数小,如果比前面的小就插入到这个数的前面。publicstaticvoidinsertionSort(int[]arr){if(arr!=null&&arr.length>=2){for(inti=1;i<arr.length;++i){for......
  • PTA题目集1~3的总结性Blog
    (1)前言: 目前发布了三次pta作业,第一次作业的题量适中,较为简单,主要了解了substring函数,math类,charAt方法的使用;在第二次作业中,首次出现了菜单计价程序编写的题目,题目量少但难度高,其中主要学习了StreamTokenizer快速输入的方法,类与类之间的调用联系,equal方法的使用等等;而在第三次的......
  • 这可能是最全面的Spring面试题总结了
    Spring是什么?Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring的优点通过控制反转和依赖注入实现松耦合。支持面向切面的编程,并且把应用业务逻辑和系统服务分开。通过切面和模板减少样板式代码。声明式事务的支持。可以从单调繁冗的事务管理代码中解脱......