我将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
答案 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时,这是一个好方法。