加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2020-12-13 21:15:59 所属栏目:Nginx 来源:网络整理
导读:nginx docs和guides表明您可以在流块内执行基于ip的白名单/黑名单. 但是,我无法找到如何允许/拒绝基于ip的连接,因为只有使用ssl preread读取的某些主机名. 情况 我有一个nginx框,代表私有网络上的许多服务.其中一些服务应该暴露在网络之外,而有些则不应该.这

nginx docs和guides表明您可以在流块内执行基于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;
        }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读