我试图在nginx中configuration一个代理,将所有代理请求绑定到特定范围内的随机IP地址。 每个代理请求将来自不同的IP地址。
我目前有下面的configuration。 但是,由于某些原因,即使configuration加载正常,nginx也不会侦听端口80。 尝试访问服务器时,连接被拒绝。
我是否在谈论这个错误?
server { listen 80; listen [::]:80; server_name my.server.name; location / { # proxy all requests to destination proxy_pass https://destination; # generate random IPv6 between IPv6Prefix::0 and IPv6Prefix::13 set_by_lua_block $ip { return 'IPv6Prefix::' .. string.format('%x', math.random(0, 19)) } proxy_bind $ip; # keep connections alive proxy_http_version 1.1; proxy_set_header Connection ''; } }
要testingNginx是否在端口80上侦听,在同一台服务器上,可以运行:
sudo netstat -nlp | grep nginx
你应该得到一个匹配Nginx的结果,报告它在端口80监听。如果这样做,下一个testing是从服务器内部通过HTTP访问Nginx:
curl http://127.0.0.1
如果可行,这个问题是防火墙或其他networking问题。 检查服务器上的防火墙是否允许传入HTTP(如果正在运行)。 如果您处于AWS等环境中,则可能还需要检查我们的安全组规则是否也允许向主机发送HTTP请求。
关于您的代理代码,请注意代理绑定是为了绑定到本地 IP地址。 也就是说,已经分配给机器的IP地址。 为了这个工作,看起来你需要一些额外的代码才能在Nginx启动之前运行,假设你的操作系统和networking硬件支持这个代码,它将目标范围内的每个IP地址分配给你的机器。
因为这是一个安全的操作,所有的IP地址也需要被闲置,因为具有相同IP地址的两台机器广播可能引起问题。