IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx保姆级入门——什么是反向代理?Nginx能实现哪些功能? -> 正文阅读

[系统运维]Nginx保姆级入门——什么是反向代理?Nginx能实现哪些功能?


1.为什么使用Nginx

首先,我们知道,为了系统的高可用,我们的系统一般会部署多个实例,即如下图所示,项目部署于多个服务器上。

  • 但是,这样是存在问题的,我们应该要对用户屏蔽掉这一信息。因为我们是不可能安排好每个用户在特定时刻去访问特定的服务器。这明显是行不通的,首先,用户无法记住这么多的服务器地址,其次,系统管理者难以管理运营。

百度为例,百度的后台肯定是不止一台服务器的,但我们在访问百度的时候,只需要输入百度的地址,就会被分配到一个服务器上去,以获得服务。

而我们访问的是哪个服务器我们并不知道,我们只管访问www.baidu.com,后面的事都会有相应的机制帮我们实现。

在这里插入图片描述

  • 要实现此类效果,即无论应用有多少实例,我们只需要访问一个地址就可以得到服务。就需要在客户端与服务端之间加上一层服务器。
  • 客户端只管访问这一中介服务器(中介服务器的地址是确定的),再由中介服务器将请求代理到真正部署有实例的服务器上去即可。

2.正向代理与反向代理的区别

2.1 正向代理

正向代理就是代理客户端。

  • 其实我们平时是接触到了很多正向代理的,正向代理就是我们在没有权限访问某些服务器或者速率很慢时,通过代理服务器代表我们去访问,而代理服务器常常是有能力、有权限达到目的的。

下面进行举例:

  1. 我们在校外、公司外,是访问不到学校、公司的内网的,但是我们想要访问内网资源时,会用到VPN。而一般内网会存在一个VPN服务器,我们使用VPN其实就是让内网的VPN服务器代替我们去进行访问(VPN服务器位于内网是可以访问内网资源的)。这其实就是一种正向代理,通过内网VPN服务器代理客户端进行请求。
  2. 我们在玩一些服务器部署在国外的游戏时(如:吃鸡),延迟会很长,此时,我们会“翻墙”,以此来提升速率。其实,这种方式与上一例是一样的逻辑。同样是让延迟低的服务器代理我们去访问,以提升速率。

在这里插入图片描述

2.2 反向代理

反向代理就是代理服务端。

  • 而反向代理的应用场景则就是对上述的多实例的情况的处理。使用一台代理服务器(下图中的深色服务器)对底层的应用服务器(下图中的浅色服务器)进行代理。将他们的地址信息对客户端屏蔽,客户端只需要访问代理服务器即可,代理服务器会将请求转发给底层的正真起作用的应用服务器。但在客户端眼里,服务器只有唯一的一台,就是代理服务器。
    在这里插入图片描述

3.Nginx的配置使用

首先,需要安装Nginx,此处博主就不进行讲解了,大家可以去查阅相关教程。
博主使用的是Linux,Windows的路径存在差异,请大家进行变更

  1. 首先,要使用Nginx,就需要进行配置,于是,我们进入其配置文件
vim /etc/nginx/nginx.conf
  1. 如下就是博主的配置文件的内容:
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
	
	upstream myserver {
	    server 192.168.240.110:8080 max_fails=3 fail_timeout=30s weight=1;
	    server 192.168.240.111:8080 max_fails=3 fail_timeout=30s weight=1;
	}
	
	server {
	    listen 80;
	    server_name 192.168.240.240;
	    location / {
	        proxy_pass http://myserver;
	    }
	}

}

  1. 大家最应该关注的应该就是下图所示的内容:

在这里插入图片描述
下面进行讲解:

1.首先,对于upstream,里面配置的是应用服务器的信息,其中包括了应用服务器的地址。
2.而max_fails是设置Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试使用。等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
3.weight值表示权重,权重越大,被分配到请求的可能性也越大。

1.server中则是对代理服务器进行配置。listen是其监听的端口号,而HTTP的默认端口号就是80,所以,当监听端口号为80的时候,就不需要在请求路径中加上端口号。
2.而后则是代理服务器的地址,以及接受请求的路径(“/”则表示根路径)。
3.proxy_pass表示将请求代理到后面的“http://myserver”代表的路径

4.Nginx有什么作用

4.1 反向代理

  • 即本文所讲述的功能,Nginx可以作为应用服务器的代理服务器。

4.2 负载均衡

  • 实则在上述的配置文件中也有所体现,即所配置的权重,权重会影响请求被分发到该服务器的概率,权重越大,被分发请求的概率越大。

4.3 HTTP服务器(动静分离)

  • 我们的项目中是存在很多静态资源的,它们不会因项目运行而发送变化,所以可以缓存在Nginx本地,加快访问速度。

其实还有例如:虚拟主机等功能。但上述功能是最为常用的功能,所以仅对上述功能进行简单阐述。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:44:38  更:2021-08-05 17:44:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 6:21:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码