使用nginx,如何限制每个预读主机名或上游的代理TCP资源的访问?

前端之家收集整理的这篇文章主要介绍了使用nginx,如何限制每个预读主机名或上游的代理TCP资源的访问?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Nginx docsguides表明您可以在流块内执行基于ip的白名单/黑名单.

但是,我无法找到如何允许/拒绝基于ip的连接,因为只有使用ssl preread读取的某些主机名.

情况

我有一个Nginx框,代表私有网络上的许多服务.其中一些服务应该暴露在网络之外,而有些则不应该.这个Nginx框代表内部和外部连接.

# TCP proxying with SSL passthrough & vhosts
stream {
        map $ssl_preread_server_name $name {
            public.example.com      public;
            private.example.com     private;
            default                 default_upstream;
        }

        upstream public {
                server 10.0.0.2:443;
        }

        upstream private {
                server 10.0.0.3:443;
        }

        upstream default_upstream {
                server 10.0.0.4:443;
        }

        server {
                listen      443;
                proxy_pass  $name;
                ssl_preread on;
        }
}

如何仅将基于ip的阻止应用于前往private.example.com的连接?

最佳答案
我找到了一个简单的方法解决你的问题.您应该使用其他服务器块来过滤IP.所以,你的配置应该是这样的:

# TCP proxying with SSL passthrough & vhosts
stream {
        map $ssl_preread_server_name $name {
            public.example.com      public;
            private.example.com     private;
            default                 default_upstream;
        }

        upstream public {
                server 10.0.0.2:443;
        }

        upstream private {
                #server 10.0.0.3:443;
                server 127.0.0.1:444;
        }

        upstream default_upstream {
                server 10.0.0.4:443;
        }

        server {
                listen      444;
                proxy_pass  10.0.0.3:443;
                ssl_preread on;
                deny  192.168.1.1;
                allow 192.168.1.0/24;
                allow 10.1.1.0/16;
                deny  all;
        }

        server {
                listen      443;
                proxy_pass  $name;
                ssl_preread on;
        }
}
原文链接:https://www.f2er.com/nginx/435343.html

猜你在找的Nginx相关文章