代理服务器工作原理是什么?

代理服务器工作原理是什么?,第1张

在>

正向代理要求客户端自己设置代理服务器的地址。客户的每次请求都将直接发送到该代理服务器,并由代理服务器来请求目标资源。比如处于防火墙内的局域网机器要访问Internet,或者要访问一些被屏蔽掉的国外网站,就需要使用正向代理服务器。

反向代理则被设置在服务器端,因而客户端无需进行任何设置。反向代理是指用代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给客户端。这种情况下,代理服务器对外就表现为一个真实的服务器。各大网站通常分区域设置了多个代理服务器,所以在不同的地方同一个域名可能得到不同的IP地址,因为这些IP地址实际上是代理服务器的IP地址。

>

如图所示,正向代理服务器和客户端主机处于同一个逻辑网络中。该逻辑网络可以是一个本地LAN,也可以是一个更大的网络。反向代理服务器和真正的Web服务器也位于同一个逻辑网络中,这通常由提供网站的公司来配置和管理。

透明代理只能设置在网关上。用户访问Internet的数据报必然都经过网关,如果在网关上设置代理,则该代理对用户来说显然是透明的。透明代理可以看作正向代理的一种特殊情况。

代理服务器通常还提供缓存目标资源的功能,这样用户下次访问同一资源时速度将很快。优秀的开源软件squid,varnish都是提供了缓存能力的代理服务器软件,其中squid支持所有代理方式,而varnish仅能用作反向代理。

首先解释一下反向代理,所谓的反向代理就是代理服务器,充当Web服务器网关的代理服务器。当请求发送到使用反向代理的Web服务器时,他们将先转到反向代理,由该代理将确定是将其路由到制定的Web服务器。

这个程序是将 本地的8086 端口作为代理服务器,代理上篇 golang >注:本配置环境在CentOS下实现,其他方法请参考官方帮助文件
一、安装Nginx软件
Nginx官方网站:>什么是 Nginx Proxy Manager ?

Nginx Proxy Manager 是用于管理 Nginx 代理主机的 Docker 容器,具有简单、强大的界面。它使您可以轻松地转发到您在家里或其他地方运行的网站,包括免费的 SSL,而无需对 Nginx 或 Letsencrypt 了解太多。

通过 phpMyAdmin 在 MariaDB 10 中新建用户 npm ,创建同名的库 npm 并授予所有权限。
在注册表中搜索 nginx-proxy-manager ,选择第一个 jc21/nginx-proxy-manager,版本选择 latest。

在 docker 文件夹中,创建一个新文件夹,并将其命名为 npm,再建 2 个子目录,分别命名为 data 和 letsencrypt

端口
端口不冲突就行,不确定的话可以用命令查一下

在浏览器中输入 >〉直接作为>负载均衡配置是超大型机器需要考虑的一些问题 同时也是数据安全的一种做法 下面我来介绍在nginx中反向代理 负载均衡配置图解 大家可参考本文章来 *** 作

首先简单的介绍下修改默认的nginx conf 大概在 ~ 行 去掉前面的#号 重启nginx

#location ~ php$ {# proxy_pass ;#}改为 location ~ php$ { proxy_pass // : ;}

分别访问 出现如下图已经能够针对不同请求访问服务器了

这样当我们访问 l的时候 前端的nginx会自动进行响应 当访问 /test php的时候(这个时候nginx目录下根本就没有该文件) 但是通过上面的设置location ~ php$(表示

访问php页面test php : 的Apache进行响应

访问目录phpMyAdmin下的页面的话 : 的Apache进行响应

修改原始默认的nginx conf的server模块部分(大概在 ~ 行)

#location ~ php$ {# proxy_pass ;#}修改为 location ^~ /phpMyAdmin/ { proxy_pass : ;} location ~ php$ { proxy_pass : ;}

上面第一个部分location ^~ /phpMyAdmin/ 表示不使用; index index

2在配置文件nginxconf的模块中添加服务器集群server cluster的定义。TwWinGWit

upstream myCluster { server 19216823:8080 ; server 19216822:80 ; server 19216828:80 ;}

表示这个server cluster包含3台服务器

3然后在server模块中定义负载均衡

location ~ php$ { proxy_pass //myCluster ; 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_pass //myCluster ; 这里的名字和上面的cluster的名字相同

配置好后,当访问页面,nginx目录下根本没有该文件,但是它会自动将其pass到myCluster定义的服务器群,分别由上述的3台服务器中的一台来做处理。

上面在定义upstream的时候每个server之后没有定义权重,表示两者均衡;如果希望某个更多响应的话,可以加weight

upstream myCluster { server 19216823:8080 weight=5; server 19216822:80 ; server 19216828:80 ;}

这样表示5/7的几率访问第一个server,1/7访问第二个、第三个。另外还可以定义max_fails和fail_timeout等参数。

所以我们使用nginx的反向代理服务器reverse proxy server的功能,将其布置到多台apache server的前端。

nginx仅仅用来处理静态页面响应和动态请求的代理pass,后台的apache服务器来对前台pass过来的动态页面进行处理并返回给nginx。

利用Nginx反向代理原理,实现集群服务器瞬间故障转移,看用于生产环境中综合设置的例子:
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /data0/proxy_temp_dir;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#轮询服务器,weight为服务器权重,与访问频率成正比,max_fails最大超时次数,fail_timeout服务器代理监听超时时间
upstream backend_server {
server 19216820343:80 weight=1 max_fails=2 fail_timeout=30s;
server 19216820344:80 weight=1 max_fails=2 fail_timeout=30s;
server 19216820345:80 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13257449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-27
下一篇 2023-06-27

发表评论

登录后才能评论

评论列表(0条)

保存