0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

nginx使用学习之正、反向代理

科技绿洲 来源:Linux开发架构之路 作者:Linux开发架构之路 2023-11-13 10:54 次阅读

Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

  • 简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理。
  • 需要在客户端配置代理服务器进行指定网站访问

图片

反向代理

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

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

图片

nginx反向代理配置实例

  1. 实现效果

打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页 面中

  1. 准备工作

(1)在 liunx 系统安装 tomcat,使用默认端口 8080,我这里8080被其他应用占用,所以我已修改端口为8081。在conf目录下的server.xml配置文件中,如下,将port改为 8081,其实下面也有类似的Connector 标签,但是要看protocol协议为HTTP/1.1的标签修改即可。

< Connector port="8081" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" / >

tomcat 安装文件放到 liunx 系统中,解压。
Tomcat的路径:
/usr/feng/apach-tomcat/tomcat8081下

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

(2)对外开放访问的端口 (我这里不需要)

firewall-cmd --add-port=8080/tcp --permanent

firewall-cmd –reload

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

(3)在 windows 系统中通过浏览器访问 tomcat 服务器
别忘了开启tomcat,在bin目录下,使用 命令:

./startup.sh

图片

  1. 访问过程的分析

图片

4、具体配置

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

图片

添加内容在 host 文件中

图片

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

图片

5、最终测试

如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故 访问该域名时会跳转到 127.0.0.1:8081 路径上。在浏览器端输入 www.123.com 结果如下:

图片

负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。

这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢?

我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 够满足需求的。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡

图片

图片

Nginx 负载均衡 配置实例

  1. 实现效果

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

  1. 准备工作

a.准备两台 tomcat 服务器

准备两台 tomcat 服务器,一台 8081,一台 8082

上面的反向代理第二个实例中已经配置成功了。但是需要添加点东西,如下哦。

b. 修改一处

在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建 页面 a.html,用于测试。

由于第二个实例中,8082中有了 edu 的文件夹,所以只在8081 文件夹下创建即可。
然后使用在vod文件下使用命令:

cp a.html ../edu/

即可完成,
查看命令

cd ../edu/ # 进入到 edu 目录下
cat a.html #查看内容

c. 测试页面

测试URL

http://208.208.128.122:8081/edu/a.html

图片

http://208.208.128.122:8082/edu/a.html

图片

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

修改了第一个示例的 配置

图片

  1. 最终测试

测试url

http://208.208.128.122/edu/a.html

图片

图片

  1. nginx 分配服务器策略

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题, 顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务,而且 Nginx 提供了几种分配方式(策略):

a. 轮询(默认)

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

b. weight

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

upstream myserver {
 server 208.208.128.122:8081 weight=10; # 在这儿
 server 208.208.128.122:8082 weight=10;
 }
 server {
 listen 80;
 server_name 208.208.128.122;
 location / {
 root html;
 proxy_pass http://myserver;
 index index.html index.htm;
 }

c. ip_hash

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

upstream myserver {
 	ip_hash;							// 在这儿
 server 208.208.128.122:8081 ; 
 server 208.208.128.122:8082 ;
 }
 server {
 listen 80;
 server_name 208.208.128.122;
 location / {
 root html;
 proxy_pass http://myserver;
 index index.html index.htm;
 }

d. fair(第三方)

fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream myserver {					
 server 208.208.128.122:8081 ; 
 server 208.208.128.122:8082 ;
 fair; 														# 在这儿
 }
 server {
 listen 80;
 server_name 208.208.128.122;
 location / {
 root html;
 proxy_pass http://myserver;
 index index.html index.htm;
 }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6867

    浏览量

    88800
  • 服务器
    +关注

    关注

    12

    文章

    9010

    浏览量

    85160
  • 局域网
    +关注

    关注

    5

    文章

    747

    浏览量

    46239
  • nginx
    +关注

    关注

    0

    文章

    142

    浏览量

    12161
收藏 人收藏

    评论

    相关推荐

    Nginx的正向代理反向代理

    Nginx认识以及配置
    发表于 05-10 16:58

    采用Nginx反向代理解决跨域

    40Nginx反向代理功能解决跨域问题
    发表于 10-10 10:58

    主要学习nginx的安装配置

    处理。因为有了中间件,使得大型网站在规划有了更好的层次性,维护上更加方便。也可以实现负载均衡、安全防护等。Nginx是一个开源高性能、可靠的HTTP中间件、代理服务,在目前企业中得到了很大的利用。今天
    发表于 10-19 14:12

    Apache与Nginx 简单对比 以及Nginx 基本使用方法

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个目前运维必备的工具之一。
    的头像 发表于 01-31 14:42 8268次阅读
    Apache与<b class='flag-5'>Nginx</b> 简单对比  以及<b class='flag-5'>Nginx</b> 基本使用方法

    介绍一款轻量级的Web服务器、反向代理服务器Nginx

    所谓反向代理,很简单,其实就是在location这一段配置中的root替换成proxy_pass即可。root说明是静态资源,可以由Nginx进行返回;而proxy_pass说明是动态请求,需要进行转发,比如
    的头像 发表于 03-26 10:36 1w次阅读
    介绍一款轻量级的Web服务器、<b class='flag-5'>反向</b><b class='flag-5'>代理</b>服务器<b class='flag-5'>Nginx</b>

    Nginx架构介绍 Nginx服务器模型分析

    Nginx是一款免费的、开源的、高性能、模块化、轻量级的HTTP服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。
    的头像 发表于 01-10 16:32 9180次阅读
    <b class='flag-5'>Nginx</b>架构介绍 <b class='flag-5'>Nginx</b>服务器模型分析

    正向代理反向代理的区别

    Nginx作为时下最流行的HTTP服务器之一,同时它是一个反向代理服务器,提到反向代理服务器,有同学可能觉得这个概念很模糊,如果说到
    的头像 发表于 05-03 17:42 3491次阅读
    正向<b class='flag-5'>代理</b>和<b class='flag-5'>反向</b><b class='flag-5'>代理</b>的区别

    Nginx的详细知识点讲解

    Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好 ngi
    的头像 发表于 12-26 10:25 2547次阅读
    <b class='flag-5'>Nginx</b>的详细知识点讲解

    如何彻底搞懂Nginx知识网结构

    1.Nginx知识网结构图 Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在
    的头像 发表于 05-03 14:15 1622次阅读
    如何彻底搞懂<b class='flag-5'>Nginx</b>知识网结构

    详解Nginx高性能的HTTP和反向代理服务器

    Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。
    的头像 发表于 03-16 11:23 2401次阅读

    Nginx目录结构有哪些

    什么是NginxNginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理
    的头像 发表于 11-11 11:27 598次阅读
    <b class='flag-5'>Nginx</b>目录结构有哪些

    Nginx 如何实现高性能低消耗

    Nginx 是一个轻量级的HTTP 服务程序,相比其他服务器程序如Apache,Nginx占用内存少,稳定性高,并发处理能力强。同时Nginx 还是一个反向
    的头像 发表于 11-11 11:31 553次阅读
    <b class='flag-5'>Nginx</b> 如何实现高性能低消耗

    Nginx的配置文件如何设置头信息保留真实IP不丢失

    Nginx 配置中设置头信息以保留客户端的真实 IP 地址通常是在使用反向代理的场景中需要的。当 Nginx 作为反向
    的头像 发表于 11-30 10:54 1865次阅读

    如何使用nginx反向代理功能?保姆级教程!

    一关于nginxnginx是一款高性能的开源Web服务器软件,也可以用于反向代理、负载均衡等,并且具有高性能、低内存消耗等优点。本文我们主要讲解关于nginx反向
    的头像 发表于 06-21 08:21 572次阅读
    如何使用<b class='flag-5'>nginx</b><b class='flag-5'>反向</b><b class='flag-5'>代理</b>功能?保姆级教程!

    nginx负载均衡配置介绍

    目录 nginx负载均衡 nginx负载均衡介绍 反向代理与负载均衡 nginx负载均衡配置 Keepalived高可用
    的头像 发表于 11-10 13:39 167次阅读
    <b class='flag-5'>nginx</b>负载均衡配置介绍