推广 热搜:   公司  快速  企业  中国  设备    上海  行业  未来 

nginx正向代理、反向代理

   日期:2024-10-31     移动:http://keant.xrbh.cn/quote/12201.html

正向代理:是帮助内网客户端访问外网服务器的,正向代理代理的是客户端,一般是客户端部署的

nginx正向代理、反向代理

反向代理,是把外网客户端的请求转发给内网服务器。反向代理代理的是服务器,反向代理一般是服务器端部署的

简单罗列一下吧:
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端配置反向代理

  • 漂亮的用户界面:基于Tabler,界面使用起来很愉快。配置服务器从未如此有趣。
  • 代理主机:公开您的专用网络 Web 服务并随时随地连接。
  • 免费 SSL:内置的 Let's Encrypt 支持允许您免费保护您的 Web 服务。证书甚至可以自我更新!
  • 部署简单:Nginx 代理管理器构建为 Docker 映像,而无需对 Nginx 或 Letsencrypt 有太多了解
  • 多个用户:配置其他用户查看或管理他们自己的主机。完全访问权限可用。
  •  反向代理配置

     实战案例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,如下图:

  • 1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • 5、location块配置请求的路由,以及各种页面的处理情况
  • https://www.cnblogs.com/dongye95/p/11096785.html#_label0_0  超长详细介绍nginx文件结构

    本文地址:http://lianchengexpo.xrbh.cn/quote/12201.html    迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多

    特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


    相关行业动态
    推荐行业动态
    点击排行
    网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号