Nginx配置四层、七层网络代理转发的方法示例

 更新时间:2024年03月08日 16:12:32   作者:银空飞羽  
nginx作为透明代理可以充分利用其高性能和灵活性来实现网络流量的转发和处理,本文主要介绍了Nginx配置四层、七层网络代理转发的方法示例,具有一定的参考价值,感兴趣的可以了解一下

写在前面

最近工作中有个需求,三个网络区域A、B、C。A可以和B互通,A与C不互通,B与C互通。现在需要从A区域发送数据到C区域固定地址。显而易见,搭建一个网络代理就可以了。

但是又有两种请求,一种是加密的七层GRPC协议的数据,一种是七层HTTP请求的数据。研究之后,GRPC协议的数据需要做四层透明代理转发到目的地址,HTTP就正常走七层转发。于是决定使用Nginx来满足需求。

GRPC四层代理配置

首先GPRC协议是一个基于HTTP2的七层协议,所以它是需要证书加解密的。客户端加密,服务端解密,所以在传输过程中我并不需要做什么操作,直接让数据传递过去就行了,仅仅是提供一个网络隧道。

(这里之前踩了坑,一直想通过配置GRPC协议来进行转发,实际上压根没必要)

所以,这种场景下,只需要提供一个四层的透明代理就可以了,只要让它经过代理送到目的地就行了。

在Nginx的配置文件中,与http同级别作如下配置

stream {
    log_format  proxy '$remote_addr -  [$time_local]  $status $protocol'
                      '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ;
    #调用日志,使用proxy格式
    access_log /var/log/nginx/tcp_proxy.log proxy;

    upstream grpcservers {
            server ip1:port;
            server ip2:port;
        }
        server {
            listen 12345;
            proxy_pass grpcservers;
        }


}

http {

  ...
}

结构大概如上,如果没有http需求可以直接删掉,写出来只是为了表达与http同级别。

stream就是配置四层代理的,在例子中我通过upstream来定义多个目的server用来达到负载均衡的效果。然后在下面的server中监听了12345端口,同时通过proxy_pass指向了转发目的地址即上述的upstream的内容。

如此一来,所有发向该Nginx IP 12345端口的数据都会被转发到对应的地址,即完成了四层透明代理。

HTTP七层代理配置

七层的就相对简单多了,直接在http中添加即可

http{
	...

			server {
            listen 80;
            server_name test.example.com;
            location / {
                proxy_pass http://test.target.com ;
            }
  		}
  ...
}

如上配置,监听了80端口,同时设置了server_name,这代表来源请求Host为test.example.com的都会走下面的这层location跳转,即代理到http://test.target.com这个地址,并包含路由path。

例如:A区域的机器请求到B中的该Nginx,请求内容为GET一下http://test.target.com/admin/test ,那么相应的,经过Nginx代理之后变为http://test.target.com/admin/test

最后

本篇文章主要涉及Nginx的一些代理使用,来源于工作时,设计的一个方案中碰到的一个跨网数据传输的问题,上述方法已经满足需求。

到此这篇关于Nginx配置四层、七层网络代理转发的方法示例的文章就介绍到这了,更多相关Nginx配置四层、七层网络代理转发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx部署前端dist包详细图文教程

    nginx部署前端dist包详细图文教程

    本文介绍了如何下载Nginx的稳定版,并对下载后的压缩包进行解压和配置,涵盖了将文件放入html目录、修改nginx.conf配置文件以及启动Nginx的步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • nginx配置反向代理到gin的方法步骤

    nginx配置反向代理到gin的方法步骤

    本文使用Nginx进行反向代理到Gin应用的配置步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Nginx+IIS简单的部署教程

    Nginx+IIS简单的部署教程

    这篇文章主要为大家详细介绍了Nginx+IIS简单的部署教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Nginx配置PATHINFO隐藏thinkphp index.php

    Nginx配置PATHINFO隐藏thinkphp index.php

    这篇文章主要介绍了Nginx配置PATHINFO隐藏thinkphp index.php,本文直接给出配置示例,需要的朋友可以参考下
    2015-07-07
  • windows系统下关闭Nignx的多种方式总结

    windows系统下关闭Nignx的多种方式总结

    这篇文章主要给大家总结介绍了windows系统下关闭Nignx的多种方式, 在Windows中启动Nginx是简单的,但有许多小伙伴不会关闭,这里给大家介绍下,需要的朋友可以参考下
    2023-08-08
  • Nginx could not build the server_names_hash 错误的解决办法

    Nginx could not build the server_names_hash 错误的解决办法

    这篇文章主要介绍了Nginx could not build the server_names_hash 错误的解决办法,需要的朋友可以参考下
    2014-03-03
  • 使用Nginx解决跨域访问问题的完整案例

    使用Nginx解决跨域访问问题的完整案例

    在现代的Web开发中,跨域访问是一种常见的需求,由于浏览器的同源策略,不同域名之间的访问存在一定的限制,本文将介绍如何使用Nginx来解决跨域访问的问题,并通过一个完整的实例来展示,需要的朋友可以参考下
    2024-03-03
  • nginx代理多次302的解决方法(nginx Follow 302)

    nginx代理多次302的解决方法(nginx Follow 302)

    这篇文章主要介绍了nginx代理多次302的解决方法(nginx Follow 302),详细的介绍了解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 详解Nginx服务器中配置Sysguard模块预防高负载的方案

    详解Nginx服务器中配置Sysguard模块预防高负载的方案

    这篇文章主要介绍了详解Nginx服务器中配置Sysguard模块预防高负载的方案,该模块由阿里巴巴的团队开发,能够设置负载阀值,比较强大,需要的朋友可以参考下
    2016-01-01
  • 详解如何在Nginx中设置文件上传大小限制

    详解如何在Nginx中设置文件上传大小限制

    在使用 Nginx 进行文件上传时,我们可能需要对上传文件的大小进行限制,以防止用户上传过大的文件导致服务器负载过高,本文将介绍如何在 Nginx 中设置文件上传大小限制,需要的朋友可以参考下
    2023-07-07

最新评论