nginx 镜像流量配置问题

nginx 镜像流量配置问题

我正在尝试在多台服务器上镜像 SNMP 陷阱。它使用 TCP/IP 流量。我正在使用 nginx 来完成此操作,但我收到以下错误

vsrsadmin@TRAP02:~$ sudo nginx -t

nginx: [emerg] "location" directive is not allowed here in /etc/nginx/nginx.conf:118

nginx: configuration file /etc/nginx/nginx.conf test failed
stream{
upstream dns_servers {
least_conn;
server 192.168.49.19:162 max_fails=1 fail_timeout=30s;
}

upstream mir_dns_servers {
least_conn;
server 192.168.49.15:162 max_fails=1 fail_timeout=30s;
}
#}

server {
listen 162;
# proxy_bind $remote_addr:$remote_port transparent;
# proxy_pass dns_servers;

location / {
mirror /mirror;
mirror_request_body on;
proxy_pass dns_servers;
}

location = /mirror {
mirror /mirror;
mirror_request_body on;
proxy_pass mir_dns_servers;
proxy_connect_timeout 200ms;
proxy_read_timeout 200ms;

答案1

stream用于中继原始 TCP 流量。

ngx_http_mirror_module用于将 HTTP 请求镜像到不同的目的地。

原始 TCP 流量不包含 HTTP 流量,因此mirror模块不能与其一起使用。

我认为 nginx 不能用于您尝试执行的镜像操作。我不知道是否有任何工具可以实现您的目标。

答案2

配置文件的问题似乎是“location”指令放在“stream”上下文中。“location”指令仅适用于“http”上下文,因此不能在“stream”上下文中使用。

但是您可以将“location”指令移到“http”块内,看看会发生什么。

相关内容