nginx的反向代理

  • 反向代理服务的实现:需要有一个负载均衡设备(即反向代理服务器)来分发用户请求,将用户请求分发到后端正真提供服务的服务器上。服务器返回自己的服务到负载均衡设备。负载均衡设备将服务器的服务返回用户。

2、正/反向代理的区别

  • 正向代理:正向代理的过程隐藏了真实的请求客户端,服务器不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求。我们常说的代理也就是正向代理,正向代理代理的是请求方,也就是客户端;

反向代理:

反向代理的过程隐藏了真实的服务器,客户不知道真正提供服务的人是谁,客户端请求的服务都被代理服务器处理。反向代理代理的是响应方,也就是服务端;我们请求www.baidu.com时这www.baidu.com就是反向代理服务器,真实提供服务的服务器有很多台,反向代理服务器会把我们的请求分转发到真实提供服务的各台服务器。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

访问www.baidu.com是正向代理的过程

两者的区别在于代理的对象不一样

正向代理中代理的对象是客户端。

反向代理中代理的对象是服务端。

4、知识扩展2

  1. HTTP Server和Application Server的区别和联系Apache/nignx是静态服务器(HTTP Server):Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apacheApache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等HTTP Server(Nginx/Apache)常用做静态内容服务和代理服务器,将外来请求转发给后面的应用服务(tomcat,jboss,php等)。应用服务器(tomcat/jboss/php)是动态服务器(Application Server):应用服务器Application Server,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java,若是Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。

5、nginx Proxy 配置

1、代理模块

2、启用 nginx proxy 代理

环境两台nginx真实服务器

a、nginx-1 启动网站(内容)(作为网站服务器)

b、nginx-2 启动代理程序

c、nginx proxy 具体配置详解

注意:proxy_pass http:// 填写nginx-1服务器的地址。

d、 使用PC客户端访问nginx-2服务器地址 浏览器中输入http://10.0.105.202 (也可以是nginx-2服务器的域名)

成功访问nginx-1服务器页面 e、 观察nginx-1服务器的日志

10.0.105.202 代理服务器地址

10.0.105.207 客户机地址。

访问成功。 记录了客户机的IP和代理服务器的IP

6、Nginx负载均衡

1、upstream配置

首先给大家说下 upstream 这个配置的,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法.

1、负载均衡算法

upstream 支持4种负载均衡调度算法

A、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;

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

C、url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。

D、fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。

2、配置实例

1、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB…..

2、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB….

3、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB….

4、ip_hash:nginx会让相同的客户端ip请求相同的服务器。

5、nginx负载均衡配置状态参数

  • down,表示当前的server暂时不参与负载均衡。
  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。

如果你像跟多更深入的了解 nginx 的负载均衡算法,nginx官方提供一些插件大家可以了解下。

3、nginx配置7层协议

举例讲解下什么是7层协议,什么是4层协议。

(1)7层协议

OSI(Open System Interconnection)是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范,共包含七层协议。直接上图,这样更直观些:

好,详情不进行仔细讲解,可以自行百度!

(3)协议配置

这里我们举例,在nginx做负载均衡,负载多个服务,部分服务是需要7层的,部分服务是需要4层的,也就是说7层和4层配置在同一个配置文件中。

准备三台机器:

代理服务IP:10.0.105. –配置本地host解析域名;

后端服务器IP:nginx-a :10.0.105.199/nginx-b:10.0.105.202(yum安装)后端服务器将nginx服务启动

配置代理服务器的nginx配置文件

202服务器yum安装的创建新的配置文件:

浏览器测试访问:

http://www.test.com/

4层协议方法(扩展)

(2)4层协议

TCP/IP协议 之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。

从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。

nginx在1.9.0的时候,增加了一个 stream 模块,用来实现四层协议(网络层和传输层)的转发、代理、负载均衡等。stream模块的用法跟http的用法类似,允许我们配置一组TCP或者UDP等协议的监听.

配置案例:

宝塔面板开启反向代理后,怎么自动续签Let's Encrypt免费SSL证书

宝塔面板是个好东西,对于菜鸟web系统管理员来说,解决了多年来管理Linux系统web服务器的不方便问题。宝塔面板做了很多脚手架的工作,方便创建web站点和各种web需要的服务。比如SSL证书的管理和免费证书的续签,定时备份等很多工作。

Let\’s Encrypt免费证书也是一个好东西,对于现在APP和小程序各种浏览器和安全监管都需要强制https了,

Let\’s Encrypt免费证书有效期3个月,支持多域名。默认会自动续签

但是这基本上都是为了PHP环境准备的,像我这样使用其它语言的,其它端口的后台服务,较好的方式就是进行Nginx反向代理。但是开启反向代理后,Let\’s Encrypt免费证书就不能愉快的使用了,目前宝塔尚未解决这个细微的缺陷。

但是解决起来非常简单,只需要几个步骤。

首先需要开启反向代理的域名作为新建网站找个web目录先开启,开启后先不要添加反向代理的配置,如果添加了需要先删除,关闭无效需要彻底先删除。

然后,在ssl管理菜单开启ssl,选择免费证书勾选需要开启的域名。点击申请等待自动申请完成!

然后再去开启反向代理!

然后再修改Nginx配置文件,在.well-know路径规则那里,添加一行root文档配置,配置的文件路径为该配置文件开头有定义的root文档目录即所在站点根目录,然后保存能保存成功说明配置文件验证通过无误。

然后此时ssl证书是开启状态,点击续签也是可以正常使用!

此方法适用于文件验证,其它方式请自测!

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。