我通过 Mikrotik 将本地机器上的 Web 服务暴露给外部 IP,并可以通过 访问它MY_EXTERNAL_IP:5000
。
但是我的 nginx 服务器无法访问MY_EXTERNAL_IP:5000
。日志:
14:09:53 firewall,info dstnat: in:bridge out:(none), src-mac 60:03:08:8c:a7:30, proto TCP (SYN), 192.168.1.19:50135->MY_EXTERNAL_IP:5000, len 64
14:09:55 firewall,info input: in:ether1 out:(none), src-mac 04:62:73:a2:55:49, proto TCP (SYN), 188.196.62.73:47850->MY_EXTERNAL_IP:5000, len 60
Nginx 错误日志:
[error] 2048#0: *434 connect() failed (111: Connection refused) while connecting to upstream, client: MY_EXTERNAL_IP, server: MY_DOMAIN.com, request: "GET / HTTP/1.1", upstream: "http://MY_EXTERNAL_IP:5000/", host: "MY_DOMAIN.com"
为什么 nginx 服务器无法访问MY_EXTERNAL_IP:5000
(导致 502 错误),否则我可以从浏览器访问?
我想我需要一条额外的防火墙过滤器规则。哪一条?
答案1
您还需要在 FORWARD 链中添加一条允许规则:
/ip firewall filter add chain=forward action=accept protocol=tcp dst-address=INTERNAL_IP dst-port=5000 log=no log-prefix=""
该规则应高于影响 FORWARD 链的任何通用阻止规则。
答案2
问题出在 NAT 设置中:我已In. Interface
确定使用“Bridge”而不是“ether1”(正确的)。