正向代理:是帮助内网客户端访问外网服务器的,正向代理代理的是客户端,一般是客户端部署的
反向代理,是把外网客户端的请求转发给内网服务器。反向代理代理的是服务器,反向代理一般是服务器端部署的
简单罗列一下吧:
1、代理对象不同。正向代理代理的是客户端,反向代理代理的是服务器。正向代理帮助客户访问其无法访问的服务器资源,反向代理帮助服务器做负载均衡,另外,由于客户端跟真实服务器不直接接触,能起到一定安全防护的作用。
2、架设主体不同。正向代理一般是客户端架设的,比如在自己的机器上装一个代理软件,反向代理一般是服务器架设的,通常是在机器集群中部署个反向代理服务器。
3、保护对象不同。正向代理保护对象是客户端,反向代理保护对象是原始资源服务器。
4、作用目的不同。正向代理主要目的是解决访问限制问题,而反向代理一方面是作为负载均衡,再就是起到安全防护的作用。
适用于局域网访问外部网络,只能通过代理服务器来访问,这种代理服务就被称为正向代理。
通常某些服务因为安全问题,限制固定访问,因此可以通过正向代理解决
访问某些国外的服务访问慢,可以通过正向代理中继缓解丢包和延迟高的问题
正向代理的配置
nginx实现代理上网,有三个关键点必须注意,其余的配置跟普通的nginx一样
1.增加dns解析resolver
2.增加无server_name名的server
3.proxy_pass指令
resolver表示DNS服务器
location表示匹配用户访问的资源,并作进一步转交和处理,可用正则表达式匹配
proxy_pass表示需要代理的地址
$http_host 表示用户访问资源的主机部分
$request_uri 表示用户访问资源的URI部分。
如,http://nginx.org/download/nginx-1.6.3.tar.gz,则$http_host=nginx.org,$request_uri=/download/nginx-1.6.3.tar.gz。
可以不设置监听端口号,nginx默认监听80端口,除非你要修改监听端口,可以用listen字段指定。
实战案例1:
在之前的编译nginx的基础上,我们对nginx二进制增加新的模快ngx_http_proxy_connect_module
缺少的库文件
缺少包
注:ldd本身不是一个程序,而仅是一个shell脚本:ldd可以列出一个程序所需要得动态链接库(so)
测试编译是否正常
正向代理的配置首先保证你的模块被编译到nginx二进制中
准备正向代理的配置文件
然后重启nginx即可
正向代理测试
注:-I参数向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。 -x参数指定 HTTP 请求的代理。
实战案例2:
假设局域网内部有一个客户端IP为192.168.65.122,该客户端想访问公网资源http://112.127.97.202:18890。则可以设置一个正向代理服务器,连接公网和局域网。正向代理服务器局域网IP为192.168.65.164,则开放该IP对应的8888端口。
局域网客户端可通过访问192.168.65.164:8888来获取http://112.127.97.202:18890资源。
运行nginx -s reload命令,使Nginx重新加载配置文件。
打开客户端浏览器,输入192.168.65.164:8888,即可看到http://112.127.97.202:18890内容
实战案例3:
配置说明:
1,配置 DNS 解析 IP 地址,比如 Google Public DNS,以及超时时间(5秒)。
2,配置正向代理参数,均是由 Nginx 变量组成。其中 proxy_set_header 部分的配置,是为了解决如果 URL 中带 "."(点)后 Nginx 503 错误。
3,配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间。
4,配置代理服务器 Http 状态缓存时间。
https://blog.51cto.com/13673090/2306487 正向代理支持https
https://www.devopsman.cn/en/posts/nginx%E6%9D%83%E5%A8%81%E6%8C%87%E5%8D%97%E4%B8%93%E8%BE%91/20200729-nginx%E4%B8%93%E8%BE%91-05-nginx%E6%AD%A3%E5%90%91%E4%BB%A3%E7%90%86%E7%9A%84%E4%BD%BF%E7%94%A8/ 详细,有待学习整理
客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。
此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
反向代理:把外网客户端的请求转发给内网服务器。反向代理代理的是服务器,反向代理一般是服务器端部署的
Nginx Proxy Manager web端配置反向代理
反向代理配置
实战案例1:
添加server块如下:
实现效果:使用nignx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001
反代案例3:nginx反向代理获取用户真实ip
nginx做反向代理时,默认的配置后端获取到的ip都是来自于nginx,那么如何转发用户的真实IP到后端程序呢?
当前端使用nginx代理,后端使用php-fpm时,如果还是使用$_SERVER['REMOTE_ADDR'],那么php程序获取到的是nginx的ip地址,而不是用户的真实ip。
在nginx的配置文件中加入下面三个指令,这样后端php就可以使用$_SERVER['HTTP_X_REAL_IP']获取到访客的ip。
如果你想使用 $_SERVER['REMOTE_ADDR'],不想修改代码,那么可以通过修改REMOTE_ADDR的值来实现。经过多层代理后 $http_x_forwared_for 会含有多个ip,其中第一个ip是客户端的ip,REMOTE_ADDR只能是客户端的ip,所以可以用正则提取 $http_x_forwarded_for的第一个 ip 给REMOTE_ADDR:
实战案例4:利用 Nginx 反向代理搭建本地 yum 服务器
注:nginx部署端在外网,同时也要能连通内网服务器
http://www.manongjc.com/detail/20-bmvectntimzbsrw.html
https://www.centoscn.vip/2039.html
https://www.runoob.com/w3cnote/nginx-proxy-balancing.html 反向代理
实战案例6、nginx反向代理配置去除前缀
使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法:
方法一:加"/"
表示匹配前缀是的请求,的结尾有, 则会把后面的路径直接拼接到后面,即移除。
方法二:rewrite
结尾没有,重写了url。
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕之后,再将结果返回给客户端。
假设有 15 个请求发送到代理服务器,那么由代理服务器根据服务器数量,平均分配,每个服务器处理 5 个请求,这个过程就叫做负载均衡。
为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力。
动静分离之前的状态:
动静分离之后:
什么是动静分离?把动态请求和静态请求分开,不是讲动态页面和静态页面物理分离,可以理解为 Nginx 处理静态页面,Tomcat 处理动态页面。
动静分离大致分为两种:
动静分离图析:
配置 Nginx,如下图:
https://www.cnblogs.com/dongye95/p/11096785.html#_label0_0 超长详细介绍nginx文件结构
本文地址:http://lianchengexpo.xrbh.cn/quote/12201.html 迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多