了解一下基本的tcp代理配置
我们首先用一个简单例子了解一下基本的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之外,至少少了以下要点:
- 配置复杂,上手难度高,nginx配置毕竟算包含逻辑
- 多实例,动态配置变更不支持
- 不能动态变更处理逻辑(代码)
接下来就逐步来实践如何优化解决这些配置问题,当然也希望大家首先思考一下这些问题原因在哪儿
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-01-03 介绍一个新库: Norns.Urd.HttpClient
2021-01-03 AOP的姿势之 简化混用 MemoryCache 和 DistributedCache 的方式