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.所以,你的配置应该是这样的:
原文链接:https://www.f2er.com/nginx/435343.html# 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;
}
}