当前位置: 首页 > news >正文

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.lryc.cn/news/242916.html

相关文章:

  • lvm 扩容根分区失败记录
  • 【机器学习】聚类(一):原型聚类:K-means聚类
  • 2824. 统计和小于目标的下标对数目 --力扣 --JAVA
  • github上不去
  • 图像处理Scharr 算子
  • JAVA 面向对象编程
  • 第十六章 解读深度学习中Batch Size、Iterations和Epochs(工具)
  • 基于UI交互意图理解的异常检测方法
  • ArgoWorkflow教程(一)---DevOps 另一选择?云原生 CICD: ArgoWorkflow 初体验
  • 数据结构与算法编程题24
  • springsecurity6配置四
  • OpenCV简介及安装
  • Unity调用dll踩坑记
  • Oracle 数据库基线安全加固操作
  • 安装最新版WebStorm来开发JavaScript应用程序
  • python opencv 放射变换和图像缩放-实现图像平移旋转缩放
  • 安装Anaconda、PyTorch(GPU版)库与PyCharm】
  • 关于pytorch以及相关包的安装教程
  • AnalyticDB for PostgreSQL 实时数据仓库上手指南
  • 【数据结构】堆(C语言)
  • 使用 Raspberry Pi、Golang 和 HERE XYZ 制作实时地图
  • 贪吃蛇(c实现)(真的超级超级简单)
  • linux 内存回收mglru算法代码注释2
  • Exchange意外登录日志
  • NX二次开发UF_CURVE_ask_curve_turn_angle 函数介绍
  • UE 进阶篇一:动画系统
  • 超文本传输协议
  • 『heqingchun-Ubuntu系统+x86架构+编译安装ffmpeg+带有nvidia硬件加速』
  • UE5 UI教程学习笔记
  • Leetcode:622. 设计循环队列 题解【具详细】