我有 Nginx,其中定义了许多“服务”(网站)。我想拒绝大量 IP 地址(主要是国际)访问所有这些服务,但同时我想“允许”不受限制地访问一些可公开访问的网站。是否可以使用免费的 Windows 版 Nginx 来实现这一点?
这是我的配置文件的结构:
http {
# common statements here;
server {
server_name publicsite.web;
# some settings;
allow all;
}
deny 1.0.0.0/8;
deny 2.0.0.0/8;
# everything below should be denied to the listed IP's
server {
server_name privatesite1.domain.web;
# some settings;
}
server {
server_name privatesite99.web;
# some settings;
}
}
我尝试了这样的配置,但是“publicsite.web”被拒绝访问其 server{} 块下列出的 IP,我猜是因为它们处于 http 级别,即使它们在下面列出。
我知道最简单的选择是将所有“拒绝”IP 列在一个单独的文件中(顺便说一下,已经是了),并将它们包含在每个应该遵守拒绝的 server{} 块内。考虑到可能有多达一百个这样的 server{} 块和一百多个拒绝 IP 子网块,我担心配置可能会变得过于复杂和庞大,从而影响服务器性能。
有没有比在每个服务器{}块中包含相同的拒绝 IP 列表更好的选择?