Nginx 四层和七层代理

四层:通过报文中的目标地址和端口,加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器,使用tcp、udp协议。

七层:"内容交换",通过报文中真正有意义的应用层内容,加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器,使用http协议

四层:和http段平级

stream {
  server {
    listen 80;
    proxy_pass server1;
  }
      upstream server1 {
            server 10.0.0.10:8080 weight=2;
            server 10.0.0.11:8080 weight=2;
      }          

cat > /etc/nginx/nginx.conf << "EOF"
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}# 四层负载均衡,为两台Master apiserver组件提供负载均衡
stream {log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';access_log  /var/log/nginx/k8s-access.log  main;upstream k8s-apiserver {server 192.168.31.71:6443;   # Master1 APISERVER IP:PORTserver 192.168.31.72:6443;   # Master2 APISERVER IP:PORT}server {listen 16443; # 由于nginx与master节点复用,这个监听端口不能是6443,否则会冲突proxy_pass k8s-apiserver;}
}http {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  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 2048;include             /etc/nginx/mime.types;default_type        application/octet-stream;server {listen       80 default_server;server_name  _;location / {}}
}
EOF

 七层:在http段内部

upstream appserver {server 10.0.0.10:8080 weight=2;server 10.0.0.11:8080 weight=2;
}server {listen       80;server_name  localhost;location / {proxy_pass http://appserver;} 

 

 

 Nginx配置文件结构 


-Nginx配置文件分为三个块(全局块、events块、http块)和四大部分(全局设置部分、主机设置部分、上游服务器设置部分、url匹配设置部分)

-全局设置部分(main):全局设置的一部分可以影响其他块的设置
-主机设置部分(server):指定nginx代理服务器的主机域名、ip地址和端口
-上游服务器设置部分(upstream):设置多个后端服务器的地址,配置每个服务器权重,从而实现后端服务器的负载均衡
-url匹配设置部分(location):对于客户端请求的url部分路径

(1)四部分结构关系图

server继承main,location继承server,upstream既不继承也不会被继承

-main层:主要配置Nginx服务器的整体配置指令;
-events层:主要影响Nginx服务器与用户的网络连接
-http层:主要是Nginx服务器中的代理、缓存和日志定义等大多数的功能和第三方模块的配置;
-server层:Nginx服务器进行代理的核心层,利用虚拟主机的技术可以对多个网址进行代理,server也可以有多个;
-location层:对请求的特定url进行匹配,转发地址定向、数据缓存和应答控制等功能,许多第三方模块配置也在location中;

(2)配置文件内容

// 本文件中nginx安装路径为:/usr/local/nginx
//全局块
//配置用户或者组,默认nobody nobody
user nobody nobody;
//配置nginx的进程数,默认为1,推荐设置为cpu核心数
worker_processes 1;
// //全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
err_log /usr/local/nginx/logs/error.log info;
// 进程PID存放路径
pid /usr/local/logs/nginx.pid;//events块
events{//设置网路连接序列化,防止惊群现象发生,默认为onaccept_mutex on;//设置一个进程是否同时接受多个网络连接,默认为offmulti_accept off;//事件驱动模块,默认为epoll,可选择select,poll,epolluse epoll;//标识单个worker进程的最大并发数(连接数),默认为512(最大连接数=连接数*进程数)worker_connections 1024;
}//http块
http{//文件拓展名与文件类型的对应映射表include /usr/local/nginx/conf/mime.types;//配置nginx响应前端请求默认的MIME类型,默认default_type text/plaindefault_type application/octet-stream;//配置默认编码charset utf-8;//取消服务日志access_log off;//可以自定义日志格式log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';//配置访问日志文件路径accsess_log /usr/local/nginx/logs/access.log main;//设定通过nginx上传文件的大小client_max_body_size 10m;//开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,//对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,//以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。sendfile on;//开启目录列表访问,合适下载服务器,默认关闭autoindex on;//长连接模式,默认开启,单位秒keepalive_timeout 60;//gzip模块设置gzip on;//设置gzip压缩级别,默认为3,可选值为0-9,0表示不压缩,1表示最小压缩,9表示最大压缩gzip_comp_level 3;//设置gzip压缩类型,默认为text/html,text/css,text/javascript,application/x-javascriptgzip_types text/plain text/css application/x-javascript text/javascript application/javascript application/json;//设置gzip压缩文件后缀,默认为.html,.css,.js,.jsongzip_proxied any;//upstream负载均衡配置模块upstream webserver{//upstream负载均衡,有4种配置方式//轮询(weight):指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。默认当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。server 192.168.1.85:8085 weight=1; //格式: server 服务端IP地址:端口号 weight=权重server 192.168.1.86:8085 weight=2 down; // down 表示当前服务已经挂掉不参与负载均衡server 192.168.1.87:8085 weight=3 backup;// backup 标识其他所有的非down和backup的服务都忙的时候,才会请求backup的服务,机器压力相对较小。//ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。如果后端服务器down掉,要手工down掉。
//         ip_hash;
//         server 192.168.1.85:8085;
//         server 192.168.1.86:8085;//fair(第三方插件):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
//         server 192.168.1.85:8085;
//         server 192.168.1.86:8085;
//         fair;//url_hash(第三方插件):按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器时比较有效。在upstream中加入hash语句,hash_method是使用的hash算法。
//         server 192.168.1.85:8085;
//         server 192.168.1.86:8085;
//         hash $request_uri;
//         hash_method crc32;}//server虚拟主机配置模块,可以有多个server{//监听端口listen 80;//监听域名或者IP地址,可以有多个用空格间隔server_name localhost;access_log  logs/host.access.log  main; ////配置错误页面(当404时展示404.html页面,配置一个location来跳转到具体错误页面)error_log 404 /404.html;//location请求url过滤模块,可以有多个//配置所有路径进行过滤location /{//根目录
//             root path;//设置网站的默认首页
//             index index.html index.html;//请求转向webserver中配置的服务器proxy_pass http://webserver;//设置拒绝的IP地址deny 127.0.0.1;//设置允许的IP地址allow 127.0.0.1;}//配置错误页面转向location = /404.html{root /usr/local/nginx/web_app/dist;index 404.html}}}

特殊说明:

listen监听:
listen port #监听该端口的所有IP连接
listen *:80 | *:8080 #监听所有80端口和8080端口
listen IP_address:port #监听指定的地址和端口号
listen IP_address #监听指定ip地址所有端口
listen *:8000; 监听指定端口上的连接

server_name监听,可以基于名称和IP进行配置
1、对于name 来说,可以只有一个名称,也可以有多个名称,中间用空格隔开。
2、使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。
3、使用正则表达式,用“~”作为正则表达式字符串的开始标记,“^”和“” 之 间 为 要 匹 配 的 内 容 , “ ” 表 示 开 头 “ ”之间为要匹配的内容,“^”表示开头 “”之间为要匹配的内容,“ 
” 表示开头“”表示结尾。

例子:
server_name 127.0.0.1 # 基于Ip配置
server_name www.123.com # 基于名称
server_name www.123.com www.456.com # 多个空格隔开
server_name .123.com www.123. # 使用通配符
server_name ~^wwwd+.123.com$; # 使用正则表达式

常见正则表达式:
^:匹配搜索字符串开始位置
$:匹配搜索字符串结束位置
.:匹配除换行符n之外的任何单个字符
[xyz]:字符集,与任意一个指定字符匹配
[a-z]:字符范围,匹配指定范围内的任何字符
w:与以下任意字符匹配 A-Z a-z 0-9 和下划线,等效于[A-Za-z0-9_]
d:数字字符匹配,等效于[0-9]
{n}:正好匹配n次
{n,}:至少匹配n次
{n,m}:匹配至少n次至多m次
*:零次或多次,等效于{0,}
+:一次或多次,等效于{1,}
?:零次或一次,等效于{0,1}

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

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

相关文章

多商家AI智能名片商城系统(开源版)——构建高效数字化商业新生态

一、项目概述 1、项目背景 1&#xff09;起源 随着数字化时代的快速发展&#xff0c;传统名片和商城系统已经难以满足企业日益增长的需求。商家需要更高效、更智能的方式来展示自己的产品和服务&#xff0c;与消费者进行互动和交易。同时&#xff0c;开源技术的普及也为开发…

ubuntu16安装docker及docker-compose

ubuntu16安装docker及docker-compose 一、环境前期准备 检查系统版本 系统版本最好在16及以上&#xff0c;可以确保系统的兼容性 lsb_release -a查看内核版本及系统架构 建议用 x86_64的系统架构&#xff0c;安装是比较顺利的 uname -a32的系统不支持docker&#xff0c;安…

【python进阶篇】装饰器(6)

在Python中&#xff0c;修饰器&#xff08;也称为装饰器&#xff09;是一个高级Python功能&#xff0c;它允许你修改或增强函数、方法或类的行为&#xff0c;而无需修改其源代码。修饰器本质上是一个接受函数作为参数的可调用对象&#xff08;通常是另一个函数&#xff09;&…

Spring-IOC之组件扫描

版本 Spring Framework 6.0.9​ 1. 前言 通过自动扫描&#xff0c;Spring 会自动从扫描指定的包及其子包下的所有类&#xff0c;并根据类上的特定注解将该类装配到容器中&#xff0c;而无需在 XML 配置文件或 Java 配置类中逐一声明每一个 Bean。 支持的注解 Spring 支持一系…

编程基础“四大件”

基础四大件包括&#xff1a;数据结构和算法,计算机网络,操作系统,设计模式 这跟学什么编程语言,后续从事什么编程方向均无关&#xff0c;只要做编程开发&#xff0c;这四个计算机基础就无法避开。可以这么说&#xff0c;这基础四大件真的比编程语言重要&#xff01;&#xff0…

(一)、SQL进阶——神奇的SQL

一、CASE表达式 1、CASE表达式概述 case表达式有简单case表达式和搜索case表达式两种写法 -- 简单case表达式 case sex when 1 then 男 when 0 then 女 else 其他 end -- 搜索case表达式 case when sex1 then 男 when sex1 then 男 else 其他 end 这两种写法执行的结…

操作系统原理与实验——实验九分页式存储

实验指南 运行环境&#xff1a; Dev c 算法思想&#xff1a; 本实验模拟分页存储管理&#xff0c;对于需要分配资源的作业&#xff0c;预先申请空间&#xff0c;内存空间满足要求&#xff0c;进行内存分配并插入作业链表&#xff0c;打印该作业页表信息与系统内存信息。对于需要…

【QT学习】9.绘图,三种贴图,贴图的转换

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统&#xff0c;可以使用相同的 API 在屏幕和绘图设备上进行绘制&#xff0c;它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作&#xff0c;其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

路由引入实验

配置思路&#xff1a; 1.IP配置&#xff1a; [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip ad 100.1.1.1 24 [R1-GigabitEthernet0/0/0]int l0 [R1-LoopBack0]ip ad 192.168.0.1 32 [R1-LoopBack0]int l1 [R1-LoopBack1]ip ad 192.168.1.1 32 [R1-LoopBack1]q dis ip int bri…

海康Visionmaster-常见问题排查方法-启动阶段

VM试用版启动时&#xff0c;弹窗报错&#xff1a;加密狗未安装或检测异常&#xff1b;  问题原因&#xff1a;安装VM 的时候未选择软加密&#xff0c;选择了加密狗驱动&#xff0c;此时要使用软授权就出现了此现象。  解决方法&#xff1a; ① 首先确认软加密驱动正确安装…

XYCTF 部分wp及学习记录

1.ezmd5 根据题目提示 我们知道应该是要上传两张md5值相同的图片 根据原文链接&#xff1a;cryptanalysis - Are there two known strings which have the same MD5 hash value? - Cryptography Stack Exchange 把保存下来的图片上传一下 得到flag 2.ezhttp 根据原文链接&…

OpenStack云计算(十一)——OpenStack网络管理,验证OpenStack网络资源模型,验证来巩固和加深对OpenStack网络资源模型的理解

项目实训一 【实训题目】 验证OpenStack网络资源模型 【实训目的】 通过验证来巩固和加深对OpenStack网络资源模型的理解。 【实训准备】 &#xff08;1&#xff09;复习Neutron网络资源模型。 &#xff08;2&#xff09;重点理解网络、子网、端口和路由器的概念。 【实…

SOTAX溶出测试系统PC触摸屏维修三部曲

SOTAX溶出测试系统作为一款广泛应用于制药行业的知名品牌&#xff0c;具有高精度、操作简便、稳定性好等特点。它适用于各种类型的药品研发和生产环节&#xff0c;为科研人员提供可靠的数据支持。瑞士SOTAX溶出仪是实验室中常用的设备&#xff0c;其触摸屏是用户交互的重要界面…

【java毕业设计】 基于Spring Boot+mysql的免税商品优选购物商城设计与实现(程序源码)-免税商品优选购物商城

基于Spring Bootmysql的免税商品优选购物商城设计与实现&#xff08;程序源码毕业论文&#xff09; 大家好&#xff0c;今天给大家介绍基于Spring Bootmysql的免税商品优选购物商城设计与实现&#xff0c;本论文只截取部分文章重点&#xff0c;文章末尾附有本毕业设计完整源码及…

Mysql学习一

目录 1.启动数据库&#xff1a; 2.命令行连接到MySQL&#xff08;winr输入cmd&#xff09; 3.MySQL的三重结构&#xff1a; 4.SQL语句分类&#xff1a; 1.启动数据库&#xff1a; winr——输入services.msc进入本地服务 2.命令行连接到MySQL&#xff08;winr输入cmd&#x…

数据结构-树和森林之间的转化

从树的二叉链表的定义可知&#xff0c;任何一棵和树对应的二叉树&#xff0c;其根节点的右子树必为空。这里我们举三个树&#xff0c;将这个由三个树组成的森林组成二叉树是这个样子的。 下面我们说明一下详细过程&#xff0c;首先将每个树转化为二叉的状态&#xff0c;如图所示…

[激光原理与应用-89]:激光器产品性能指标参数详解

目录 示例&#xff1a;大量能纳秒激光器 示例2&#xff1a;中等能量纳秒激光器 1、中心波长Wavelength (nm) 351nm1nm 2、脉冲宽度 Pulse Width ~120ns 1kHz 3、重复频率 Repitition Rate 1~10KHz 4、行频 Line Frequency 50 to 60 Hz 5、单脉冲能量 Pulse …

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…

在linux系统中启动pycharm

1.找到pycharm的安装路径&#xff0c;一般在下载文件夹中 2.进入pycharm的安装路径&#xff0c;进入bin目录 3.右击&#xff0c;打开终端&#xff0c;输入./pycharm.sh

数字化工厂生产管理系统提升企业竞争力

在当今激烈竞争的市场环境中&#xff0c;企业面临着诸多挑战&#xff0c;如不断增加的客户需求、日益严格的质量标准以及快速变化的市场趋势。为了在这样的环境中保持竞争力&#xff0c;许多企业正在转向数字化工厂生产管理系统。 数字化工厂生产管理系统是一种集成的软件解决方…