本文主要介绍通过nginx进行方向代理的流程图,并通过示例代码进行详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。
本文主要介绍通过nginx进行方向代理的流程图,并通过示例代码进行详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。
Nginx实现方向代理
1.什么是nginx
Nginx是一个非常轻量级的HTTP服务器,由俄罗斯人编写。它是一个高性能的HTTP和反向代理web服务器,还提供IMAP/POP3/SMTP服务。它的特点是内存少,并发性强。事实上,nginx的并发性在同类型的web服务器中确实更好。使用nginx网站的用户有百度、JD.COM、新浪、网易、腾讯、淘宝等。
2.什么是代理
代理服务器,客户端发送请求时,不会直接发送到目的主机,而是先发送到代理服务器。代理服务接受客户端的请求后,会发送给主机,接收目的主机返回的数据,存储在代理服务器的硬盘中,然后发送给客户端。
比如我们身边想租房的人
3.没有代理的情景
在没有代理的情况下,客户端和nginx服务器既是客户端,又是客户端之间的请求服务器,服务器直接响应客户端。
4.企业场景在互联网请求里面,客户端往往无法直接向服务端发起请求,那么就需要实现客户端和服务通信。
5.nginx代理服务常见模式
nginx作为代理服务,是根据应用场景总结的。代理分为正向代理和反向代理。
6.正向代理
转发代理:客户端代理服务器:
代理人简单地打了一个租房子的比方:
A(租客)B(中介)C(房东)A(客户)想租C(服务器)的房子,但是A(客户)不认识C(服务器),租不到。B(代理)知道C(服务器)可以租这个房子,所以你让B(代理)帮你租这个房子。Ps:在这个过程中,C(服务器)不知道A(客户端)只知道B(代理)。c(服务器)不知道A(客户端)租了房子,只知道房子租给了B(代理)
-
转发代理,设置在客户端和目标主机之间,仅用于代理内部网络到Internet的连接请求。客户端必须指定一个代理服务器,并将最初直接发送给Web服务器的http请求发送给代理服务器。
7.反向代理
反向代理:客户端-代理-服务器反向代理还用了一个租房的例子:A(客户端)想租房,B(代理)租给他。这个时候C(服务器)其实就是楼主。b(经纪人)是把这套房子租给A(客户)的中介。在这个过程中,A(委托人)不知道这个房子的房东是谁,他可能会认为这个房子是B(代理人)的
-
反向代理服务器设置在服务器端,通过缓冲频繁请求的页面来减轻服务器的工作量,并将客户端请求转发到内网上的目标服务器;并将从服务器获得的结果返回给请求互联网连接的客户机。此时,代理服务器和目标主机显示为服务器。
8.反向代理的主要应用
现在,许多大型网站都使用反向代理。除了防止外网对内网服务器的恶意攻击和缓存减轻服务器压力和访问安全控制外,还可以进行负载均衡,将用户请求分发到多台服务器。
9.nginx 代理可支持的代理协议
Http属于七层应用层代理超文本传输协议。
Https代理http/https协议
TCP属于四层传输代理tcp/dupxiey。
Websocket用于开发代理http1.1长链接通信协议。
GRPC代理go语言远程调用
POP/IMAP代理邮件发送和接收协议
RTMP代理流媒体,直播
10.web01配置代理
[root @ web 01 PHP]# vim/etc/nginx/conf . d/blog . drz . com . conf
服务器{
听80;
服务器名blog.drz.com;
根目录/代码/WordPress;
索引index.php index.html;
access _ log/var/log/nginx/blog . drz . com _ access . log main;
位置~\。php$ {
fastcgi _ pass 127 . 0 . 0 . 1:9000;
fastcgi _ param SCRIPT _ FILENAME $ document _ root $ fastcgi _ SCRIPT _ name;
包括fastcgi _ params
}
}
代理文字媒体
[root @ lb01 ~]# vim/etc/nginx/conf . d/daili . conf编辑wordpress的代理
服务器{
听80;
服务器名blog.drz.com;
位置/{
proxy _ pass http://10 . 0 . 0 . 7;
proxy _ set _ header HOST $ http _ HOST;
proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;
proxy _ http _ version 1.1
proxy _ connect _ timeout 60s
proxy _ read _ timeout 60s
proxy _ send _ timeout 60s
打开代理缓冲;
proxy _ buffer _ size 8k
proxy _ buffers 88k;
}
}
root@lb01 ~]# nginx -t
nginx:配置文件/etc/nginx/nginx.conf语法没问题
nginx:配置文件/etc/nginx/nginx.conf测试成功
[root@lb01 ~]# nginx -s重新加载
11.添加发往后端服务器的请求头信息
#当用户请求时,HOST的值是www.oldboy.com,那么代理服务会像后端或www.oldboy.com一样传递请求吗?
proxy _ set _ header Host $ http _ Host;
#将$remote_addr的值放入变量X-Real-ip中,$remote_addr的值就是客户端的ip。
proxy _ set _ header X-Real-IP $ remote _ addr;
#客户端通过代理服务访问后端服务,后端服务通过该变量记录真实的客户端地址。
proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;
12.代理到后端的TCP连接、响应、返回等超时时间
//nginx代理与后端服务器的连接超时(代理连接超时)
语法:proxy _ connect _ timeout
默认:proxy _ connect _ timeout 60s
上下文:http,服务器,位置
//nginx代理等待后端服务器的响应时间
语法:proxy _ read _ timeout time
默认:proxy _ read _ timeout 60s
上下文:http,服务器,位置
//后端服务器数据回传nginx代理超时
语法:proxy _ send _ timeout time
默认:proxy _ send _ timeout 60s
上下文:http,服务器,位置
13.为什么要使用代理
1)提高访问速度。由于目标主机返回的数据会存储在代理服务器的硬盘中,下次有客户访问同一个站点数据时,会直接从代理服务器的硬盘中读取,起到缓存的作用,尤其是对于热门站点,可以显著提高请求速度。
2)防火墙的功能。因为所有客户端请求都必须通过代理服务器访问远程站点,所以您可以在代理服务器上设置一个限制来过滤一些不安全的信息。
3)访问无法通过代理服务器访问的目标站点。互联网上有很多发达的代理服务器。当客户端的访问受到限制时,客户端可以通过不受限制的代理服务器访问目标站点。一般来说,我们使用的过墙浏览器只是使用了代理服务器。虽然不能出国,但是也可以直接接入外网。
14.总结
正向代理的对象是客户端,反向代理为客户端服务的对象是服务器,服务器为服务器服务。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。