Nginx将我的Web服务器的传出流量列入黑名单

时间:2018-10-12 15:43:47

标签: nginx

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

在以下情况下,我试图阻止我的应用程序与example.com联系。我可以让nginx在同一个套接字文件上侦听黑名单阻止,以便查看来自Web服务器的请求吗?与当前的设置一样,它不起作用。

这是我的配置:

df['c']=[ np.array(x)[y].tolist() for x , y in  zip(df.A,df.B)]
df
Out[300]: 
                  A             B                 c
0  [11, 12, 13, 14]  [0, 2, 3, 0]  [11, 13, 14, 11]
1          [11, 22]        [1, 0]          [22, 11]

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

1 个答案:

答案 0 :(得分:0)

在托管环境中,如果任何人需要这样的解决方案是访问权限或选项,则受到限制。根据我们的应用程序所在的环境,这是我实现整体代理的一部分的“转发代理”解决方案的方式。

从我的应用程序到Internet的请求将首先通过独立的/ solo 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;
    }
  }

这是常规方法,我的配置将根据我们的应用程序需求使用更多规则和选项。有人可能会争辩说,nginx可能会或可能不会用于此目的,但是当选择受到限制时,尤其是在使用PaaS时,这是一个好方法。