nginx的n种用法(nginx安装+正向代理+反向代理+透明代理+负载均衡+静态服务器)

nginx的安装

一、安装依赖

# 一键安装四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

二、安装nginx

yum install nginx

三、检查是否安装成功

nginx -v

四、启动/停止nginx

/etc/init.d/nginx start
/etc/init.d/nginx stop

五、编辑配置文件

/etc/nginx/nginx.conf 

正向代理

正向代理:内网服务器主动去请求外网的服务的一种行为
正向:相同的或一致的方向;代理:自己做不了的事情或者自己不打算做的事情,委托或依靠别人来完成

客户端向目标服务器发起的请求,是由代理服务器代替它向目标主机发起,得到结果之后,通过代理服务器返回给客户端。
在这里插入图片描述

正向代理的配置

server {#指定DNS服务器IP地址  resolver 114.114.114.114;   #指定代理端口 (主动发起请求的内网服务器端口)   listen 8080;  location / {#设定代理服务器的协议和地址(固定不变)    proxy_pass http://$http_host$request_uri; }  
} 

就可以做到内网中端口为8080的服务器主动请求到1.2.13.4的主机上,如在Linux下可以:

curl --proxy proxy_server:8080 http://www.taobao.com/

反向代理

反向代理:reverse proxy,是指用代理服务器来接受客户端发来的请求,然后将请求转发给内网中的上游服务器,上游服务器处理完之后,把结果通过nginx返回给客户端。
在这里插入图片描述
在这里插入图片描述

反向代理配置

server {#监听端口listen 80;#服务器名称,也就是客户端访问的域名地址(客户端向服务器发起请求时输入的域名)server_name  a.xxx.com;#nginx日志输出文件access_log  logs/nginx.access.log  main;#nginx错误日志输出文件error_log  logs/nginx.error.log;root   html;index  index.html index.htm index.php;location / {#被代理服务器的地址(代表源服务器的访问地址,也就是真正处理请求的服务器(localhost+端口号))proxy_pass  http://localhost:8081;#对发送给客户端的URL进行修改的操作proxy_redirect     off;proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_max_temp_file_size 0;}
}

透明代理

透明代理:也叫做简单代理,意思客户端向服务端发起请求时,请求会先到达透明代理服务器,代理服务器再把请求转交给真实的源服务器处理,也就是是客户端根本不知道有代理服务器的存在。

点类似于拦截器,如某些制度严格的公司里的办公电脑,无论我们用电脑做了什么事情,安全部门都能拦截我们对外发送的任何东西,这是因为电脑在对外发送时,实际上先经过网络上的一个透明的服务器,经过它的处理之后,才接着往外网走,而我们在网上冲浪时,根本没有感知到有拦截器拦截我们的数据和信息
在这里插入图片描述

有人说透明代理和反向代理有点像,都是由代理服务器先接受请求,再转发到源服务器。
其实本质上是有区别的,透明代理是客户端感知不到代理服务器的存在,而反向代理是客户端感知只有一个代理服务器的存在,因此他们一个是隐藏了自己,一个是隐藏了源服务器。
事实上,透明代理和正向代理才是相像的,都是由客户端主动发起请求,代理服务器处理;他们差异点在于:正向代理是代理服务器代替客户端请求,而透明代理是客户端在发起请求时,会先经过透明代理服务器,再达到服务端,在这过程中,客户端是感知不到这个代理服务器的。

负载均衡

负载均衡:将服务器接收到的请求按照规则分发的过程,称为负载均衡。负载均衡是反向代理的一种体现。
在这里插入图片描述

负载均衡的模式

①、轮询:每个请求按时间顺序逐一分配到不同的后端服务器,也是nginx的默认模式。轮询模式的配置很简单,只需要把服务器列表加入到upstream模块中即可。

# 负载中有三台服务器,当请求到达时,nginx按照时间顺序把请求分配给三台服务器处理
upstream serverList {server 1.2.3.4;server 1.2.3.5;server 1.2.3.6;
}

②、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题

# 负载中有三台服务器,当请求到达时,nginx优先按照ip_hash的结果进行分配,也就是同一个IP的请求固定在某一台服务器上,其它则按时间顺序把请求分配给三台服务器处理
upstream serverList {ip_hashserver 1.2.3.4;server 1.2.3.5;server 1.2.3.6;
}

③、url_hash:按访问url的hash结果来分配请求,相同的url固定转发到同一个后端服务器处理

upstream serverList {server 1.2.3.4;server 1.2.3.5;server 1.2.3.6;hash $request_uri; hash_method crc32; 
}

④、fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream serverList {server 1.2.3.4;server 1.2.3.5;server 1.2.3.6;fair;
}

在每一种模式中,每一台服务器后面的可以携带的参数有:

  • down: 当前服务器暂不参与负载
  • weight: 权重,值越大,服务器的负载量越大
  • max_fails:允许请求失败的次数,默认为1
  • fail_timeout:max_fails次失败后暂停的时间
  • backup:备份机, 只有其它所有的非backup机器down或者忙时才会请求backup机器

如下面的配置是指:负载中有三台服务器,当请求到达时,nginx按时间顺序和权重把请求分配给三台服务器处理,例如有100个请求,有30%是服务器4处理,有50%的请求是服务器5处理,有20%的请求是服务器6处理

upstream serverList {server 1.2.3.4 weight=30;server 1.2.3.5 weight=50;server 1.2.3.6 weight=20;
}

如下面的配置是指:负载中有三台服务器,服务器4的失败超时时间为60s,服务器5暂不参与负载,服务器6只用作备份机

upstream serverList {server 1.2.3.4 fail_timeout=60s;server 1.2.3.5 down;server 1.2.3.6 backup;
}

下面是一个配置负载均衡的示例(只写了关键配置):
其中:

upstream:是负载的配置模块,serverList是名称,随便起

server_name:是客户端请求的域名地址

proxy_pass:是指向负载的列表的模块,如serverList

 upstream serverList {server 1.2.3.4 weight=30;server 1.2.3.5 down;server 1.2.3.6 backup;
}   server {listen 80;server_name  www.xxx.com;root   html;index  index.html index.htm index.php;location / {proxy_pass  http://serverList;proxy_redirect     off;proxy_set_header   Host             $host;}
}

静态服务器

静态服务器的配置如下,其中关键配置为:

  • root:直接静态项目的绝对路径的根目录。
  • server_name : 静态网站访问的域名地址。
server {listen       80;                                                         server_name  www.xxx.com;                                               client_max_body_size 1024M;location / {root   /var/www/xxx_static;index  index.html;}}

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

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

相关文章

重生之我是一名程序员 41 ——字符串函数(2)

哈喽啊大家晚上好!今天呢我们延续昨天的内容,给大家带来第二个字符串函数——strcat函数。 首先呢,还是先带大家认识一下它。strcat函数是C语言中用于将两个字符串连接起来的函数,其函数原型为: char *strcat(char *…

JAVA毕业设计112—基于Java+Springboot+Vue的宠物领养社区小程序(源码+数据库)

基于JavaSpringbootVue的宠物领养社区小程序(源码数据库)112 一、系统介绍 本系统前后端分离带小程序 小程序(用户端),后台管理系统(管理员) 小程序: 登录、注册、宠物领养、发布寻宠、发布领养、宠物社…

5.3每日一题(不确定正负号的级数敛散性:和一个正项级数比较判定)

比较判别法和比较判别法的极限形式是对正项级数而言的&#xff0c;若一个级数和p级数比较&#xff0c;结果>0&#xff0c;则同敛散&#xff1b;若结果<0&#xff0c;则结果乘以-1 结果又同敛散了&#xff1b;所以只要比值不等于0&#xff0c;则同敛散&#xff1b; 所以当…

JVM虚拟机:G1垃圾回收器的日志分析

本文重点 本文我们将学习G1垃圾回收器的日志 使用 执行命令 java -Xms20M -Xmx20M -XX:PrintGCDetails -XX:UseG1GC 类名 分析 前面我们学习了G1垃圾回收器&#xff0c;它的回收有三种可能&#xff1a; YGC FGC MixedGC GC pause表示STW,Evacuation表示复制对象&#xff0c;…

c语言-字符函数和字符串函数详解

文章目录 1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strncpy函数的使用6. strcat的使用和模拟实现7. strncat函数的使用8. strcmp的使用和模拟实现9. strncmp函数的使用10. strstr的使用和模拟实现11. strtok函数的使用12. strerro…

【尚跑】2023宝鸡马拉松安全完赛,顺利PB达成

1、赛事背景 千年宝地&#xff0c;一马当先&#xff01;10月15日7时30分&#xff0c;吉利银河2023宝鸡马拉松在宝鸡市行政中心广场鸣枪开跑。 不可忽视的是&#xff0c;这次赛事的卓越之处不仅在于规模和参与人数&#xff0c;还在于其精心的策划和细致入微的组织。为了确保每位…

Kotlin学习——kt里面的函数,高阶函数 函数式编程 扩展函数和属性

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

论文笔记:详解NEUPSL DSI

《Using Domain Knowledge to Guide Dialog Structure Induction via Neural Probabilistic 》 名词解释 Dialog Structure Induction&#xff08;DSI&#xff09;是推断给定目标导向对话的潜在对话结构&#xff08;即一组对话状态及其时间转换&#xff09;的任务。它是现代对…

基于Scapy修改ClientHello的SNI(三)

需求:修改HTTPS的ClientHello中的SNI字段 目标:修改成功,wireshark显示正常 语言:Python 三方库:Scapy 下面是一个标准的ClientHello报文,是从一个完整的HTTPS流中保存出来的,原始报文中的SNI是www.baidu.com 在上一篇文章中 记录基于scapy构造ClientHello报文的尝试…

【Docker】Docker与Kubernetes:区别与优势对比

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。   kubernetes&#xff0c;简称K8s&a…

C#调用ffmpeg从视频提取图片

微信公众号“CSharp编程大全”的文章《C#从视频提取图片&#xff1f;》介绍了基于Microsoft.DirectX.AudioVideoPlayback.Video类实现从视频提取图片的方式&#xff0c;本来是想学习并测试该类的用法&#xff0c;但实际测试过程中却没有测通。百度从视频提取图片&#xff0c;网…

【Leetcode合集】1457. 二叉树中的伪回文路径

1457. 二叉树中的伪回文路径 1457. 二叉树中的伪回文路径 代码仓库地址&#xff1a; https://github.com/slience-me/Leetcode 个人博客 &#xff1a;https://slienceme.xyz 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&am…

rtsp点播异常出现‘circluar_buffer_size‘ option was set but it is xx

先说现象: 我使用potplay播放器来点播rtsp码流的时候可以点播成功&#xff0c;同事使用vlc和FFplay来点播rtsp码流的时候异常。 排查思路: 1.开始怀疑是oss账号问题&#xff0c;因为ts切片数据是保存在oss中的&#xff0c;我使用的是自己的oss账号&#xff0c;同事使用的是公司…

芯片安全和无线电安全底层渗透技术

和传统网络安全不同&#xff0c;硬件安全、芯片安全、无线电安全属于网络底层安全的重要细分领域&#xff0c;是网络安全的真正基石&#xff0c;更是国家安全的重要组成部分&#xff0c;“夯实网络底层安全基础&#xff0c;筑牢网络强国安全底座”&#xff0c;是底网安全重要性…

【小沐学写作】原型设计工具汇总(Axure RP)

文章目录 1、简介2、Axure RP2.1 工具简介2.2 工具特点2.2.1 互动事件2.2.2 条件逻辑2.2.4 工作表格2.2.5 多状态容器2.2.6 数据驱动接口2.2.7 自适应视图2.2.8 流程图 2.3 工具安装2.3.1 安装2.3.2 运行 2.4 使用费用2.5 工具体验2.5.1 登陆框制作 3、其他3.1 Figma3.2 Adobe …

如何通过ShardingJDBC进行读写分离

背景信息&#xff1a; 面对日益增加的系统访问量&#xff0c;数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说&#xff0c;将数据库拆分为主库和从库。其中主库负责处理事务性的增删改操作&#xff0c;从库负责处理查询操作&#…

实验题【网关设置+VRRP+OSPF】(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求和考核目标3. 当前配置3.1 PC1、PC2、PC3、PC4和PC5配置3.2 SW配置3.2.1 SW2配置3.2.2 SW3配置3.2.3 SW4配置3.2.4 SW1配置 3.2. R配置3.2.1 R1配置3.2.2 R2配置 ⭐ H3C模拟器资源链接 H3C网络…

微服务学习|初识MQ、RabbitMQ快速入门、SpringAMQP

初识MQ 同步通讯和异步通讯 同步通讯是实时性质的&#xff0c;就好像你用手机与朋友打视频电话&#xff0c;但是&#xff0c;别人再想与你视频就不行了&#xff0c;异步通讯不要求实时性&#xff0c;就好像你用手机发短信&#xff0c;好多人都能同时给你发短信&#xff0c;你…

xadmin后台在每一行记录增加一个复制链接按钮

xadmin后台在每一行记录增加一个复制链接按钮 1、效果 点击复制后,自动把url链接复制到粘贴板,按Ctrl+v即可显示复制内容。 2、实现代码 adminx.py # 用户管理 class UserWhiteListAdmin(object):search_fields = [name, mobile] # 检索字段list_display

在家无聊想获取收益?这几种副业项目分享给你

总会有在家无聊的时候&#xff0c;特别是一些很“宅”的人。厌倦了一些娱乐方式后&#xff0c;想起生活经济上的压力&#xff0c;这时候就会想到要做些什么获取收益。 是的&#xff0c;不用出门&#xff0c;不用和别人面对面交流&#xff0c;时间自由可控&#xff0c;这就是在家…