使用Nginx实现端口转发TCP代理的实现示例

目录
  • 需求产生背景
  • 为什么要使用Nginx实现
  • 使用Nginx实现端口转发
  • 安装依赖
    • 下载并安装
  • 启动并检查服务是否正常

需求产生背景

最近同事在测试和生产环境中分别部署了一套应用,由于应用只能集成LDAP,而我们公司使用的是AD,于是我搭建了一个OpenLDAP服务,账号先通过lsc从AD同步到OpenLDAP,然后使用saslauthd传递身份验证到AD。在测试环境中我们的应用能够连接LDAP登录,但是在生产环境中却无法访问到OpenLDAP服务器,我不想重复的在生产环境重新安装维护一套OpenLDAP服务,这个过程比较繁琐,还需通过定时任务每天让AD的账号与OpenLDAP同步,于是我想这可以通过端口转发实现,节点之间的拓扑大概像下面这样。

为什么要使用Nginx实现

在百度上搜索端口转发,实现的方式有很多种,多数都是通过Iptables实现,但是我分别在Ubuntu和CentOS服务器上测试过都没生效,无奈选择Nginx来实现

使用Nginx实现端口转发

如果我们的操作系统比较新,可以直接直接通过软件源安装nginx,只要nginx版本大于1.9默认是支持TCP代理的。

检查nginx是否支持TCP代理

nginx -V

当我们在输出的配置参数中包含--with-stream说明nginx是支TCP代理的

安装依赖

RHEL/CentOS/Fedora

yum install -y pcre* openssl*

Debian/Ubuntu

apt-get install zlib1g-dev libpcre++-dev openssl

下载依赖

wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz -C /usr/local/src

下载并安装

下载源码包

wget http://nginx.org/download/nginx-1.9.9.tar.gz

解压

tar -zxf nginx-1.9.9.tar.gz

编译安装

cd nginx-1.9.9
./configure --prefix=/usr/local/nginx \
  --add-module=/usr/local/src/ngx_cache_purge-2.3 \
  --with-http_stub_status_module --with-stream
make && make install;

修改配置文件

/usr/local/nginx/conf/nginx.conf

events {
  ...
}

stream {
    upstream ldap {
        hash $remote_addr consistent;
        server 192.168.1.8:389;
    }
    server {
        listen 1389;
        proxy_connect_timeout 5s;
        proxy_timeout 5s;
        proxy_pass ldap;
    }
}

http {
  ...
}

这个示例我们将本地的1389端口转发到192.168.1.8的389端口上

启动并检查服务是否正常

启动nginx服务

/usr/local/nginx/sbin/nginx

检查nginx进程

netstat -anput | grep nginx

到此这篇关于使用Nginx实现端口转发TCP代理的实现示例的文章就介绍到这了,更多相关Nginx端口转发TCP代理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • nginx搭建tcp代理服务器

    nginx不仅可以是http代理服务器,也可以轻松搭建成tcp代理服务器. 首先我们看下最新开发版的搭建方法 1. 安装 > wget http://nginx.org/download/nginx-1.9.0.tar.gz > tar zxvf nginx-1.9.0.tar.gz 版本要求 1.9.0+ 2.配置 worker_processes auto; error_log /var/log/nginx/error.log info; stream { upstream backend

  • Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)

    前奏 我们都知道 nginx 是一款优秀的反向代理服务,用过 nginx 的也应该都知道 upstream,upstream 节点一般置于 http 节点大括号中,常规在 upstream 中配置需要被负载均衡的服务器列表. 比较多的使用做如下示意: #user nobody nobody. #worker_processes 2; #pid /nginx/pid/nginx.pid; error_log log/error.log debug; events { -- } http { --

  • 使用Nginx实现端口转发TCP代理的实现示例

    目录 需求产生背景 为什么要使用Nginx实现 使用Nginx实现端口转发 安装依赖 下载并安装 启动并检查服务是否正常 需求产生背景 最近同事在测试和生产环境中分别部署了一套应用,由于应用只能集成LDAP,而我们公司使用的是AD,于是我搭建了一个OpenLDAP服务,账号先通过lsc从AD同步到OpenLDAP,然后使用saslauthd传递身份验证到AD.在测试环境中我们的应用能够连接LDAP登录,但是在生产环境中却无法访问到OpenLDAP服务器,我不想重复的在生产环境重新安装维护一套Op

  • nginx进行端口转发的实现

    目录 使用场景 解决方案 使用场景 1.内网有一台服务器的端口需要映射到外网(举例外网的服务器申请了一个域名,然后给该域名做了一个nignx的配置,然后配置中需要访问一个内网的http的服务) 2.内网服务器没有外网访问权限,全部内网中只有一台服务器有外网权限,可用于曲线救国版内网穿透 3.虚拟机只有NAT网,且虚拟机只配备了内网localhost转发到宿主机localhost,此时想外网或者其他内网(非宿主机)想访问虚拟机端口 4.将代理机作为堡垒机(跳板机),用于防止内部系统被人随意访问,此

  • python基于socket进行端口转发实现后门隐藏的示例

    思想: 用户正常浏览器访问请求通过8080端口,请求若为http请求,则正常转发到80端口保证网站正常运行.否则转发到8888端口执行系统命令. 8888端口监听代码: #!/usr/bin/env python from socket import * import os HOST='127.0.0.1' PORT=8888 BUFSIZE=1024 ADDR=(HOST,PORT) tcpSerSock = socket(AF_INET,SOCK_STREAM) tcpSerSock.set

  • 使用Docker安装Nginx并配置端口转发问题及解决方法

    使用docker安装并运行nginx命令: docker run --name=nginx -p 80:80 -d docker.io/nginx 使用命令: docker exec -it nginx /bin/bash 进入容器可查看到几个重要的文件 配置文件:nginx.conf 在 /etc/nginx/nginx.conf 日志文件: /var/log/nginx/access.log /var/log/nginx/error.log 使用cat命令打开nginx.conf root@

  • nginx实现数据库端口转发

    目录 1.mysql为例 2.完整配置如下 出于数据安全性考虑,正常情况下,网站或者项目的数据库一般都是禁止外网访问,或者只允许部分主机访问.那么,如何才能不修改这类权限的前提下,让其他被禁止访问的主机也能访问这个数据库呢.这时,Nginx的作用就体现出来了. 1.mysql为例 oracle.sqlserver等数据库配置和下面配置一样,只是数据库的端口不一样而已需要注意的是这个配置要写在http外边 #使用nginx做数据库端口转发 stream { upstream sql { # 配置数

  • Mac中使用Nginx实现80端口转发8080端口

    由于项目本身的原因,开发必须使用80端口实现,而在Unix内核中非Root用户无法直接使用1024以下的端口,最初作者找到了pfctl的方式实现80端口转发到8080端口实现访问,经过亲测出现了最为严重的问题,按照当时的方法配置好之后发现本机Mac通过localhost/<项目名>和127.0.0.1/<项目名>可以访问,此时很是兴奋,但出现了最根本的问题,那就是同局域网内其他机器通过访问IP地址/<项目名>(例如:IP地址是192.168.0.106,那么其他机器访问

  • Nginx服务器中配置非80端口的端口转发方法详解

    nginx可以很方便的配置成反向代理服务器: server { listen 80; server_name localhost; location / { proxy_pass http://x.x.x.x:9500; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy

  • springboot整合Nginx实现负载均衡反向代理的方法详解

    目录 一.百度百科 二.Nginx作为web服务器 三.Nginx处理请求逻辑图 四.Nginx的优点 五.Nginx应用场景 1.反向代理 2.负载均衡 3.动静分离 六.Nginx的常用命令 1.启动 2.从容停止 3.快速停止 4.强制停止 5.重启 6.重启Nginx服务 七.Nginx配置文件 八.Nginx 配置实例-反向代理实例 1.实现效果 2.准备工作 3.访问过程的分析 4.具体配置 5.最终测试 九.Nginx 的原理 1.mater 和 worker 2.worker 如

  • 阿里云国际版使用Nginx作为HTTPS转发代理服务器的处理方法

    目录 HTTP/HTTPS 转发代理的分类 转发代理处理 HTTPS 流量时需要特殊处理 NGINX解决方案 HTTP 连接隧道 (L7 解决方案) 历史背景 ngx_http_proxy_connect_module 环境建设 应用场景 NGINX流(L4解决方案) 常见问题 ngx_stream_ssl_preread_module 环境建设 应用场景 常见问题 结论 NGINX最初被设计为反向代理服务器.但是,随着不断发展,NGINX也可以作为实现转发代理的选项之一.转发代理本身并不复杂,

  • SSH端口转发,本地端口转发,远程端口转发,动态端口转发详解

    第一部分 SSH端口转发概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我们带来什么好处吧! SSH端口转发概述 让我们先来了解一下端口转发的概念吧.我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发. 它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自

随机推荐