回答
收藏
分享
举报
stream下不支持if判断嘛
提问于2023-05-06 14:04

浏览 3.1k

我尝试把if放到stream或者server下,都提示if不支持。

其实我想实现的功能很简单,如果$bytes_received为0,则直接return。反之就转发到upstream里配置的服务器

已修改于2023-05-06 14:04



写下您的回答
发表回答
全部回答(0)

按点赞数排序

按时间排序

提问者
7801802zliw
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

配置乱了,$arg_是HTTP里的变量,stream中没有arg_变量

点赞 0
浏览 4.1k

有两种办法:

1、通过proxy_protocol协议

这个协议是在TCP字符流的最前端,添加一串描述真实IP地址的消息。其中,1.0协议是ASCII字符串消息,如果你用tcpdump抓包,很容易看到。2.0是二进制格式,也比较容易分析。

ngx_stream_proxy_module模块的proxy_protocol指令,就是用于设置后端连接的。当然,后端要能够处理这个协议才行。

如果后端也是Nginx,那么可以在listen指令后,添加proxy_protocol选项,也能拿到真实IP。

具体你可以参考我这门课《Nginx核心知识100讲》第113节课(可以免费学4节课):https://time.geekbang.org/course/detail/100020301-76735

2、通过修改IP报文中source ip实现

这种方法需要修改服务器上的网关,比较麻烦,副作用很大,你可以参考我这篇文章中,如何获取UDP中的真实IP地址:https://www.nginx-cn.net/article/76

点赞 0
浏览 7.6k

options请求?需要跨域访问? 

点赞 0
浏览 7.8k