我们首先用一个简单例子了解一下基本的tcp代理配置

worker_processes  1;        #nginx worker 数量
error_log logs/error.log; #指定错误日志文件路径
events {
worker_connections 1024;
} stream {
log_format main '$remote_addr [$time_local] $protocol $status'; #access_log format: 访问的远端服务地址 时间 协议 状态码
access_log logs/access.log main buffer=16384 flush=3; #access_log 文件配置 upstream nature_upstream {
server 127.0.0.1:6699; #upstream 配置为 hello world 服务
} server {
#监听端口,若你的8699端口已经被占用,则需要修改
listen 8699 reuseport; proxy_pass nature_upstream; #转发到 upstream
}
} #为了大家方便理解和测试,我们引入一个hello world 服务
http {
server {
#监听端口,若你的6699端口已经被占用,则需要修改
listen 6699;
location / {
default_type text/html; content_by_lua_block {
ngx.say("HelloWorld")
}
}
}
}

启动服务并测试

$ openresty -p ~/openresty-test -c openresty.conf #启动
$ curl http://localhost:8699 -i #测试
HTTP/1.1 200 OK
Date: Fri, 16 Dec 2022 05:19:34 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive HelloWorld

观察 access.log 文件可以看到有两条记录

$ cat logs/access.log
127.0.0.1 - - [16/Dec/2022:13:23:22 +0800] "GET / HTTP/1.1" 200 21 "-" "curl/7.68.0" # 6699端口的hello world 服务记录
127.0.0.1 [16/Dec/2022:13:23:22 +0800] TCP 200 # 8699端口的代理服务记录

如此基本的配置,大家就算了解了。

但是也可以看到如此配置,大家可以发现离一个优秀的gateway来说,

除了少了漂亮的UI之外,至少少了以下要点:

  1. 配置复杂,上手难度高,nginx配置毕竟算包含逻辑
  2. 多实例,动态配置变更不支持
  3. 不能动态变更处理逻辑(代码)

接下来就逐步来实践如何优化解决这些配置问题,当然也希望大家首先思考一下这些问题原因在哪儿

目录

了解一下基本的tcp代理配置的更多相关文章

  1. nginx做TCP代理实现群集

    nginx做TCP代理实现群集 nginx从版本1.9开始,既能做HTTP代理,又能做TCP代理,这就非常完美了. 配置nginx.conf. 为了简单起见,笔者故意去掉了HTTP代理配置部分,只保留 ...

  2. Nginx 配置TCP代理

    Nginx 1.9 版本以后增加了stream模块,可以对tcp,udp请求进行代理和负载均衡了,今天来体验一下首先编译安装过程configure的时候增加选项 --with-stream --wit ...

  3. nginx TCP 代理& windows傻瓜式安装

    一.下载nginx Windows http://nginx.org/en/download.html 二.解压到目录 三.进入目录并start nginx.exe即可启动 cd d:/java/ng ...

  4. nginx : TCP代理和负载均衡的stream模块

    一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy. 这算是一个nginx比较明显的缺憾.不过,在1.90发布后这个认知将 ...

  5. haproxy反向代理配置示例

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. haproxy代理配置段参数设定

    代理配置段:有四个配置段 default:设定默认参数, frontenf:前端服务器的设定 backend:后端服务器的设定 listening:是设定前端和后端一一对应的设定 参数: 1bind: ...

  7. 早期nginx tcp代理(基于patch实现)

    nginx tcp代理功能由nginx_tcp_proxy_module模块提供,同时监测后端主机状态.该模块包括的模块有: ngx_tcp_module, ngx_tcp_core_module, ...

  8. Nginx 部署、反向代理配置、负载均衡

    Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...

  9. tcp 代理的作用

    http://www.h3c.com.cn/Service/Document_Center/IP_Security/FW_VPN/F1000-E/Configure/Operation_Manual/ ...

  10. Nginx TCP代理

    nginx 在1.9.0 版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为nginx_tcp_proxy_module的第三方patch来实现,该模块的代码托管在github上 网址: ...

随机推荐

  1. VUEX 使用学习四 : action

    转载请注明出处: action 用于处理异步任务:action,可以操作任意的异步操作,类似于mutations,但是是替代mutations来进行异步操作的.首先mutations中必须是同步方法, ...

  2. linux 安装配置 jdk8

    转载请注明出处: 1.下载 jdk 在 Linux 环境的安装包.可以在官网下载, 官网连接:https://www.oracle.com/java/technologies/javase/javas ...

  3. Cortex M3 - NVIC(中断向量控制器)

    NVIC-概述 nested vector interrupt control - 内嵌向量中断控制器 传统ARM中断控制在Core的外部,软件接收到中断之后,需要查中断的编号,然后启动相应的中断处理 ...

  4. Go-并发-Go程和信道

  5. [转帖]使用 goofys 挂载 S3 bucket 为文件系统

    https://xie.infoq.cn/article/7f178e0a1315f758d77c6c2bb 背景 公司的 gitlab 目前都是直接存储在物理盘上,为了确保数据不会丢失,需要重复多次 ...

  6. nr_requests 以及 queue_depth的学习与了解

    nr_requests 以及 queue_depth的学习与了解 背景 冯诺依曼的计算机体系结果里面 运算器,存储器是核心. 但是将核心的产生的结果推送出去的其实是IO IO虽然不是像运算器和存储器那 ...

  7. 【转帖】26.Java本地方法的理解(native方法)

    目录 1.什么是本地方法? 2. 为什么要使用Native method? 1.什么是本地方法? 本地方法就是java代码里面写的native方法,它没有方法体.是为了调用C/C++代码而写的.在JN ...

  8. [转帖]华为OpenEuler欧拉系统添加epel源方法

    https://blog.whsir.com/post-7002.html   由于国产华为OpenEuler欧拉系统的版本命名是22.03.22.03这种,并且在查看版本的路径中是/etc/open ...

  9. Linux与Windows系统字符集的简要学习

    背景 最近同事反馈公司的产品再更新了mysql-8.0.31的驱动jar包后部分功能报错. 问题核心原因 研发这边石磊老师已经找到了. 结论是Mysql8.0.26之后的数据库驱动好像会识别操作系统的 ...

  10. XCODE IOS 静态链接库替换升级

    XCODE 版本15.2. 一个很久需求没更新的IOS 应用,近来有新需求要开发. 拉下代码运行,出现了个BAD_ACCESS错误.出错的位置位于一个调用的第三方的.a静态库内部.因为调用代码并没有修 ...