我正在尝试在多台服务器上镜像 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”块内,看看会发生什么。