.
Para acesso à Web seguro e com melhor controle no NGINX, você pode permitir e restringir determinados endereços IP, intervalos, subdomínios e URLs na configuração do NGINX.
O servidor web NGINX fornece uma variedade de configurações para proteger seu servidor web, aplicativo web, etc.
Incluindo o controle de acesso do usuário com base no endereço IP.
Você pode facilmente permitir/colocar endereços IP na lista branca e proibir/restringir/colocar endereços IP na lista negra no NGINX com base no endereço IP, intervalo de IP, subdomínio e URL do arquivo de configuração.
Neste guia, você aprenderá como permitir ou restringir um determinado endereço IP ou o intervalo de endereços IP, subdomínios e URLs no servidor web NGINX.
Motivo para permitir/restringir o acesso por endereço IP
Pode haver vários motivos para permitir e restringir o acesso por endereço IP.
E um dos motivos que está passando pela minha cabeça é que, se você planeja criar um ponto de acesso à API para desenvolvedores, pode permitir que um IP específico ou intervalo de IPs tenha acesso ao ponto da API.
Outros usos podem restringir o acesso ao URL do administrador ou colocar na lista negra um intervalo de IPs para evitar ataques de aplicativos da Web, como DDOS.
Como permitir/restringir o acesso por endereço IP no NGINX
Permitir ou restringir o acesso do usuário ao aplicativo da Web exige que você especifique endereços IP no permitir e negar diretivas.
O permitir diretiva permite o acesso a um endereço IP especificado, rede ou soquete UNIX, e o negar A diretiva não permitirá o acesso ao endereço IP, rede ou soquete UNIX especificado.
Ambas as diretivas podem ser configuradas no arquivo de configuração NGINX com base na distribuição. No meu caso, estou usando as versões mais recentes da distribuição Ubuntu e Fedora como alternativas.
Abra o arquivo de configuração NGINX
Se você estiver usando a configuração NGINX padrão sem o host virtual, execute o seguinte comando em seu aplicativo de terminal:
$ sudo nano /etc/nginx/nginx.conf
Se você tiver um arquivo de configuração separado ou sua distribuição localizar a configuração em /etc/nginx/sites-enabled/default
então abra sua configuração com o seguinte comando:
$ sudo nano /etc/nginx/sites-enabled/default
Leia também: Como alterar a localização do documento da Web Nginx no Linux
Etapa 2: Permitindo ou Proibindo o Endereço IP
Existem várias maneiras de permitir ou proibir o acesso ao aplicativo da web com base no endereço IP, conforme mostrado abaixo.
Para isso, anote o endereço IP que você precisa permitir e negar e defina-o nas diretivas NGINX. Abaixo estão os possíveis exemplos que você pode precisar ao modificar o arquivo de configuração.
allow192.168.108.252
; # Only Allow 192.168.108.252 IP Address deny192.168.108.153
; # Only Deny 192.168.108.153 IP Address ################################################################## allow all; # Allow All IP Address deny all; # Deny All IP Address ################################################################## allow192.168.108.0/24
; # Allow IPs range from 192.168.108.0 to 192.168.108.255 deny192.168.108.0/24
; # Deny IPs range from 192.168.108.0 to 192.168.108.255
As diretivas acima serão usadas para controlar o acesso do usuário com base no endereço IP ou intervalo de endereços IP definidos no arquivo de configuração NGINX.
Leia também: 3 maneiras de descobrir seu endereço IP no Linux
Permitir ou proibir endereços IP no NGINX para o domínio
Agora vamos permitir o acesso ao 192.168.108.252
endereço IP e deny all
solicitações de todos os endereços IP para todo o nosso domínio, usando a diretiva abaixo.
allow 192.168.108.252
;
deny all;
Coloque as diretivas acima no meio do server
bloquear no arquivo de configuração NGINXcomo mostrado abaixo.

Se você deseja permitir todos os endereços IP e proibir 192.168.108.252
em seguida, adicione as diretivas abaixo no arquivo de configuração NGINX.
allow all;
deny 192.168.108.252
;
Finalmente, você pode recarregar o servidor web NGINX para aplicar as alterações.
Permitir ou proibir endereços IP no NGINX para subdomínios
As coisas ficam bem diferentes quando você tem dois subdomínios para o seu site.
Por exemplo, blog.exemplo.com e loja.exemplo.com com seus arquivos de configuração em /etc/nginx/sites-enabled/blog.conf
e /etc/nginx/sites-enabled/shop.conf
e deseja permitir o acesso ao 192.168.108.252
endereço IP e deny all
solicitações de todos os endereços IP para o seu blog.exemplo.com subdomínio.
Para isso, você precisa abrir o blog.conf
arquivo de configuração e coloque as diretivas abaixo dentro do server
bloquear.
allow 192.168.108.252
;
deny all;
Abaixo está o resultado das alterações acima.

Se você deseja aplicar alterações a ambos os subdomínios, edite o blog.conf
e shop.conf
arquivos de configuração para ambos os subdomínios e adicione as diretivas mencionadas anteriormente.
Finalmente, você pode recarregar o servidor web NGINX para aplicar as alterações.
Permitindo ou Proibindo Faixa de IP no NGINX
Se você quiser permitir um intervalo de IP de 192.168.108.0
para 192.168.108.255
e negar todos os outros endereços IP, você pode usar o formato CIDR para o intervalo de IP.
Você pode verificar o Ferramentas de IP para CIDR para encontrar o formato CIDR de um intervalo específico de endereços IP.
Depois de conhecer o formato CIDR para o seu intervalo de IP, no meu caso, será 192.168.108.0/24
para permitir IPs de 192.168.108.0
para 192.168.108.255
e negar todos os outros endereços IP, que você pode definir na diretiva, conforme mostrado abaixo.
allow 192.168.108.0/24
;
deny all;
Adicione as diretivas acima dentro do server
bloco no arquivo de configuração NGINX, conforme mostrado abaixo.

Se você quiser negar o intervalo de endereços IP de 192.168.108.0
para 192.168.108.255
e permitir todos os outros, use as diretivas abaixo.
allow all;
deny 192.168.108.0/24
;
Finalmente, você pode recarregar o servidor web NGINX para aplicar as alterações.
Permitindo ou Proibindo o Endereço IP no NGINX para URL
Se você tem um exemplo.com/api URL em seu site para desenvolvimento e deseja permitir apenas o acesso ao endereço IP específico.
Por exemplo, se eu quiser permitir o acesso ao 192.168.108.252
endereço IP e deny all
solicitações de todos os endereços IP para o /api URL, então você pode criar um novo location
para o /api URL e adicione o location
bloquear no arquivo de configuração NGINX.
location /api {
allow 192.168.108.252
;
deny all;
}
Abaixo está o resultado das alterações acima.

As alterações acima restringirão o acesso ao /api URL em vez de todo o site. Outro exemplo é se você tiver um /admin URL que os usuários normais não precisam inserir.
Você pode criar um novo location
para o /admin URL e adicione o location
bloquear no arquivo de configuração NGINX.
location /admin {
allow 192.168.108.252
;
deny all;
}
Abaixo está o resultado das alterações acima.

Finalmente, você pode recarregar o servidor web NGINX para aplicar as alterações.
Permitir ou proibir vários IPs no NGINX
Se você deseja permitir o acesso a vários endereços IP e negar o acesso a todos os outros endereços, pode especificar os dois endereços IP em dois endereços separados. allow
diretivas, como mostrado abaixo.
allow192.168.108.153
; allow192.168.108.252
; deny all;
Ele só permitirá o acesso a 192.168.108.153
e 192.168.108.252
e negar o acesso ao restante dos endereços IP. Agora, adicione-o ao server
bloquear ou location
bloquear para um URL específico, conforme mostrado abaixo.

Finalmente, você pode recarregar o servidor web NGINX para aplicar as alterações.
Etapa 3: reinicie o NGINX e verifique o log
Execute o seguinte comando para verificar se a configuração foi atualizada sem erros:
$ sudo nginx -t
Se não houver erros, execute o seguinte comando para recarregar o servidor NGINX:
$ sudo systemctl reload nginx
Você pode verificar o /var/log/nginx/error.log
arquivo para encontrar as entradas das conexões de entrada e saída para ver se a restrição e permissão estão funcionando corretamente, conforme mostrado abaixo.
$ sudo cat /var/log/nginx/error.log debug
Abaixo está a saída do comando acima.

Isso é tudo para este guia, onde expliquei como ter um melhor controle do acesso ao seu aplicativo da Web, permitindo e negando determinados endereços IP, intervalos e subdomínios no NGINX.
Se você tiver alguma dúvida sobre o tema, sinta-se à vontade para comentar.
Verifique: Lista de negação dinâmica de endereços IP

Mente tecnológica inovadora com 12 anos de experiência trabalhando como programador de computador, desenvolvedor web e pesquisador de segurança. Capaz de trabalhar com uma variedade de soluções de tecnologia e software e gerenciar bancos de dados.
.