正向代理和反向代理
代理主要用在网络连接方面,不同类型的代理用于不同类型的连接。有一些代理用于隐藏用户的身份,而另外一些代理用于隐藏服务器的信息。常见的代理类型有正向代理和反向代理。这两种代理的名字有些相近,不过差别却非常大。
正向代理也就是大家常说的“代理”。用户向代理服务器发送请求,代理服务器从网络中检索数据。正向代理最典型的应用场景就是绕过网络限制。比如你们学校或公司的网络限制访问抖音,可以通过设置一台代理服务器,然后不直接连接抖音的服务,而是走代理,让代理来访问抖音的服务。
目的服务收到的请求来源IP会是代理服务器的IP,而不是用户的IP。这使得代理服务器可以提供一定的匿名性。
与正向代理功能相近的是NAT,两者都可以通过私有IP地址提供互联网访问。不过这两种技术在TCP/IP协议栈中的位置不同。NAT工作在网络层,而代理工作在应用层。对使用者来说,NAT对各种应用程序都是透明的;而使用代理则必须在应用程序中指定代理服务器的主机地址。
比如,使用NAT访问网页,不需要在浏览器上进行任何配置;而要使用代理访问网页,必须要在浏览器中指定代理的IP地址,如果代理仅支持HTTP协议,则只能通过代理访问Web服务器,不能访问FTP服务器。
由于NAT并非针对应用程序,因此在访问互联网时,NAT提供了比代理更高的可伸缩性。不过,NAT无法提供基于用户名和密码的身份验证。而代理支持身份验证,可以配置代理服务器仅允许特定用户访问互联网。
Web代理是最常用的正向代理,用于代理HTTP请求。除了会把完整的url传递过去外,来自客户端的请求与常规HTTP请求几乎没有什么两样。下面是一个请求的例子:
代理服务器收到请求后,向目标服务器发起请求,并且返回响应,比如:
上面的例子只对HTTP协议生效。有一些Web代理允许通过HTTP CONNECT方法建立通信隧道,利用这个隧道,代理服务器可以转发任意TCP数据包。
通过CONNECT方法,客户端要求HTTP代理服务器将TCP连接转发到所需的目的地;然后,服务器代表客户端向目标服务器发起连接。服务器建立连接后,代理服务器将继续与客户端之间来回代理TCP数据流。在上面的过程中,只有初始的连接请求是HTTP,之后服务器仅代理建立的TCP连接。
客户端连接到代理服务器,在请求中指定主机和端口,例子如下:
如果代理服务器允许连接并且连接到指定的主机,返回2XX成功响应:
现在,客户端发送到代理服务器的所有数据都蒋被转发给远程主机。
流行的HTTP代理服务器软件有Haproxy、Apache、Squid等。
反向代理一般用于控制对专用网络上服务器的访问。它代表一个客户端从一个或多个服务器检索资源,然后将这些资源返回给客户端,好像资源源自代理服务器本身一样。
流行的Web服务器经常使用反向代理功能,从而屏蔽HTTP功能“较弱”的应用程序框架。这里的“较弱”主要指的是处理大量负载能力比较弱,以及处理不同形式的请求格式的能力比较弱,比如HTTP协议就有HTTP(S)1x,HTTP(S) 2x多个版本。反向代理可以将HTTPS请求转换为HTTP请求、暂时缓存请求以保护后端服务器、处理一些cookie和会话数据等等。
反向代理是非常有用的。常见用途如下:
与正向代理充当关联的客户端与任意服务器中介不同,反向代理是任意客户端与关联服务器的中介。换句话说,正向代理代表客户端,而反向代理代表服务器。
先决条件
要遵循本教程,您需要:
一个Ubuntu 1404 Droplet
一个非root用户Sudo
至少1 GB的交换空间
第1步 - 安装流量服务器
由于流量服务器可在Ubuntu 1404的默认存储库,可以使用安装它apt-get 。在这样做之前,请确保更新您的包索引文件。sudo apt-get update && sudo apt-get install trafficserver
默认情况下,流量服务器侦听端口8080。您可以使用浏览器访问 / your_server_ip :8080/现在。但是,您将看到错误,因为您尚未配置它。
第2步 - 安装Web服务器
根据定义,代理服务器充当外部用户和web服务器之间的中介。因此,在开始配置流量服务器之前,应该在计算机上安装Web服务器,如Apache HTTP Server。 安装并使用启动Apache apt-get 。sudo apt-get install apache2
您现在可以使用浏览器,访问 // your_server_ip /看到Apache的欢迎页面。
第3步 - 禁用对Web服务器的远程访问
默认情况下,Apache在所有网络接口上接受连接。通过将其配置为仅在环回接口上接受连接,可以确保远程用户无法访问连接。 打开portsconf使用nano或您喜爱的文本编辑器。sudo nano /etc/apache2/portsconf
搜索包含的行Listen 80的指令并将其更改为:
portsconf
Listen 127001:80
保存并退出文件。 接下来,打开apache2conf 。sudo nano /etc/apache2/apache2conf
在文件末尾添加以下行:
apache2conf
ServerName localhost
保存并关闭文件。 要应用配置更改,请使用以下命令重新启动Apache:sudo service apache2 restart
尝试使用浏览器访问h:// your_server_ip /一次。您的浏览器现在应该显示错误,因为您阻止了对服务器的远程访问。
第4步 - 将流量服务器配置为反向代理
在此步骤中,我们将配置流量服务器作为反向代理。要做到这一点,打开remapconfig ,这是你应该修改定义流量服务器的映射规则的文件。sudo nano /etc/trafficserver/remapconfig
让我们创建一个简单的规则,说明对端口8080上的服务器IP地址的所有请求都映射到Web服务器的本地地址和端口。您可以通过将以下行添加到文件的末尾来实现:
remapconfig
map ://your_server_ip:8080/://127001:80/
保存文件并退出。 要激活新映射规则,使用reread_config的命令traffic_line :sudo traffic_line --reread_config
打开浏览器,访问:// your_server_ip :8080/ 。如果您现在可以看到Apache的欢迎页面,则您已成功将流量服务器配置为反向代理。
第5步 - 配置流量服务器缓存一切
默认情况下,流量服务器将缓存只有当它包含一个HTTP响应Cache-Control或Expires头显式指定项目多长时间应储存在缓存中。但是,由于我们的Web服务器只提供静态文件,因此可以安全地缓存其所有响应。 配置流量服务器,使其缓存所有的HTTP响应,你应该改变称为配置变量的值proxyconfighttpcacherequired_headers为0。这可以通过使用进行set_var的命令traffic_line 。sudo traffic_line --set_var proxyconfighttpcacherequired_headers --value 0
应用使用的变化reread_config标志。sudo traffic_line --reread_config
打开浏览器,访问h:// your_server_ip :8080/一次。这将在Traffic Server的缓存中存储Apache欢迎页面。
第6步 - 检查缓存
要查看Traffic Server的缓存的内容,您可以使用名为Cache Inspector的工具,它具有基于Web的界面。 要激活工具,设置的值proxyconfighttp_ui_enabled配置变量设置为1。sudo traffic_line --set_var proxyconfighttp_ui_enabled --value 1
接下来,创建一个映射规则,指定要用于访问它的路径。打开remapconfig再次使用nano 。sudo nano /etc/trafficserver/remapconfig
让我们缓存督察可用/inspect 。 要做到这一点,在文件的顶部添加以下行:
remapconfig
map http://your_server_ip:8080/inspect http://{cache}
保存文件并退出。 要应用更改,请重新启动Traffic Server。
正向代理服务器,用户可以知道web服务的数据库等系统的IP地址和端口号等敏感息,由于暴露了这些关键信息,容易遭受到恶意攻击所以安全性比较差。
反向代理用到了反向代理服务器,使用反向代理,典型的应用是将防火墙后面的服务器提供给Intenet用户访问,隐藏了web应用服务,如数据库的IP地址、端口号等信息,提高了系统的安全性等,同时使用反向代理还可以实现多台服务器的负载均衡,启用高级的URL和管理技术,使处于不同web服务器系统的web界面同时存在一个URL空间下,提高系统性能。
反向代理是指服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
两者区别:
1、用途差异
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率;
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
2、安全差异
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为经过授权的客户端提供服务;反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。
扩展资料:
反向代理工作方式:
1、通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
2、由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。
3、当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。
4、不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
-反向代理
1、配置域名解析:确保你的域名已正确解析到服务器的IP地址。你可以通过在终端中使用ping命令或者在线的DNS查询工具来验证域名是否正确解析到了服务器。
2、配置Nginx反向代理:在Nginx配置文件中设置反向代理,将钉钉的请求转发到指定的目标服务器。确保反向代理配置正确,包括正确设置目标服务器的IP地址和端口号。
3、配置HTTPS证书:如果你的域名使用了HTTPS协议,你需要配置正确的SSL证书。确保证书的有效性,并将其配置在Nginx中。
4、检查请求头:钉钉鉴权是依赖于请求头中的一些信息,例如User-Agent。确保在Nginx反向代理中正确地传递这些请求头信息。
nginx反向代理后不能正常显示的原因有很多,主要有:
反向代理配置有误:没有正确配置反向代理,如反向代理的机器地址、域名解析、端口号等配置错误
所有的可用冗余机器全部不可访问:反向代理可以配置多个冗余的机器,也可以只配置一个,当所有配置的被反向代理的机器全不可访问,如网络异常等,会导致反向代理后不能显示
反向代理配置完后没有保存并重新加载配置
解决方法:
检查反向代理配置是否正确,包括域名/IP、端口号、协议、反向代理的路径等
检查被代理的服务器是否可以直接访问,并在nginx所在的环境下测试与被代理服务器的连通性,检查包括但不限于底层网络可用性、防火墙拦截配置、DNS解析是否正确等
保存配置文件并使用nginx -s reload命令重新载入配置
备注提醒:
可以通过nginx的错误日志进一步的排查问题,也可以通过被代理服务器的一些访问日志、错误日志共同分析解决
没办法做这样的反向代理。
除非是
->
->
如果是这样的话,配置是这样的
location /8080 {
proxy_pass ;
proxy_redirect off;
}
location /8000 {
proxy_pass ;
proxy_redirect off;
}
proxy的其它参数就自己设置了,可以参考下
首先你pass proxy的地址是统一可以识别的么?换了机器也可以识别后端代理的地址么?
主要的排错方式还是定位到网络识别这块,另外也需要看下端口是否冲突,是否有其他的业务用了80端口。
然后你这个代理的8310端口是排查重点,代理的服务器防火墙是否允许通信?
0条评论