【问题标题】:nginx blacklist outgoing traffic from my web servernginx将来自我的网络服务器的传出流量列入黑名单
【发布时间】:2018-10-19 21:13:06
【问题描述】:

我已将 nginx 部署为在 puma Web 服务器前运行的代理。 我想做的是阻止到某些域的传出流量。

在以下场景中,我试图阻止我的应用联系 example.com。我可以让 nginx 在同一个套接字文件上监听黑名单块,这样我就可以看到来自我的网络服务器的请求吗?与当前的设置一样,它不起作用。

这是我的配置:

upstream app_server {
    server unix:/tmp/nginx.socket fail_timeout=0;
}

#Block outgoing to this domain
server {
    listen <%= ENV["PORT"] %>;
    server_name  example.com;
    return 404;
}

server {
    listen <%= ENV["PORT"] %>;
    server_name _;
    keepalive_timeout 5;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;

    }
}

更具体地说,我的应用程序是托管的,我无权访问防火墙或主机文件。 Nginx 是我目前唯一的选择,我的 Web 服务器绑定到 unix:/tmp/nginx.socket

【问题讨论】:

  • 您的 hosts 文件中是否有 example.com 指向 127.0.0.1
  • 更具体地说,这是在 Heroku 中运行的,因此我的解决方案是托管的,我无法控制流量、防火墙等,但要使用 nginx。因此,例如,我想做的是阻止我的应用向 google.com 发送请求并返回 404。
  • nginx 没有发出请求,那你为什么要阻止它呢?
  • @ShawnC。这就是我想弄清楚的,一种让 nginx 阻止来自我的网络服务器的传出请求的方法。
  • nginx 不是你要找的

标签: nginx


【解决方案1】:

如果有人需要这样的解决方案,则在托管环境中的访问或选项是有限的。根据我们的应用程序所在的环境,下面是我如何实现“正向代理”解决方案,作为我整体反向代理的一部分。

从我的应用程序到互联网的简单请求将首先通过独立/单独的 nginx,并根据我在第二个块中定义为“白名单”的内容确定是否允许。

# simple reverse proxy 
 server {
   listen <%= ENV["PORT"] %>;
   server_name _;
   keepalive_timeout 5;
   client_max_body_size <%= ENV['NGINX_CLIENT_MAX_BODY_SIZE'] || 1 %>M;

   location / {
      proxy_pass http://127.0.0.1/
   }
 }

  ## FORWARD PROXY ##

  # iterate over the WHITELIST var
  map $http_host $outbound {
    default deny;
    <% ENV['WHITELIST'].split(" ").each do |url| %>
      ~\s*<%= url %>$ allow;
    <% end %>
  } 

  # applications connect internally to nginx using port 80 and not directly to the public network
  server {
    listen 80;
    location / {
      if ( $outbound = "deny" ) { return 403; }
      resolver 8.8.8.8;
      proxy_pass http://$http_host$request_uri;
    }
  }

这是一般方法,我的配置将根据我们的应用程序需要使用更多规则和选项。 Someone might argue that nginx may or may not be utilized for such purpose but when options are limited especially when using PaaS this was a good approach.

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多