Preparação
No segmento de preparação, as instruções gerais para ambos os métodos referidos posteriores são anotadas. Obviamente, é importante ter um console para acessar o servidor por SSH e um editor de texto adequado como nano para abrir o arquivo de configuração Nginx. Assim que ambos forem adquiridos, use os seguintes comandos para abrir, salvar e aplicar as alterações. As etapas a seguir assumem que o usuário já acessou o servidor por SSH.
- Digite o seguinte comando para abrir o arquivo de configuração padrão do Nginx. Se cada domínio tiver um arquivo de configuração separado, use seu nome em vez do padrão.
- No arquivo padrão ou de configuração digite os códigos indicados em um dos métodos mencionados posteriormente. Certifique-se de usar apenas um deles.
- Use o seguinte comando para testar o arquivo de configuração antes de colocá-lo no modo ao vivo.
- Se tudo estiver na ordem certa, vá em frente e digite o seguinte comando para aplicar as alterações para que tenham efeito.
Método 1: Método Geral
O método geral é muito fácil de implementar e entender, pois contém apenas um bloco de localização. Além disso, ele bloqueia solicitações para determinados formatos de arquivo apenas em vez de bloquear todas as solicitações de referenciadores inválidos para o servidor.
- Copie o seguinte snippet de código.
- Abra o arquivo padrão do nginx como visto na fase de “Preparação”.
- Cole o trecho de código copiado sob o primeiro bloco de localização encontrado no arquivo padrão. No nginx, a expressão regular que não diferencia maiúsculas de minúsculas (~ *) é sempre priorizada antes da barra (/) e, portanto, o seguinte trecho de código é executado antes do bloco de localização da barra.
- Salve e feche o arquivo padrão e siga 3, 4 etapas na fase de “Preparação” para fazer as alterações entrarem em vigor.
No exemplo a seguir, ele bloqueia solicitações para arquivos css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf e eot. Existem 10 declarações condicionais no bloco de localização. A primeira declaração condicional permite que os recursos sejam visualizados diretamente por meio do navegador da web, 2WL e 3rd os blocos permitem que os recursos sejam visualizados através do site original (ambos os subdomínios sem www e www), o restante dos blocos, exceto a pesquisa?qe o último bloco permitem que os rastreadores do mecanismo de pesquisa acessem e indexem os recursos, o que é muito importante para indexar as imagens tanto no google images quanto no bing images. A pesquisa?q permite que o serviço de cache do google acesse e salve os recursos junto com a página, e assim a página pode ser acessada diretamente por meio do resultado da pesquisa do google quando o site está offline.
localização ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $if ($ http_referer !~ "^ $")
definir $ rule_0 1 $ rule_0;
if ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
definir $ rule_0 2 $ rule_0;
if ($ http_referer !~ "^ http: // nucuta.com $ ")
definir $ rule_0 3 $ rule_0;
if ($ http_referer !~ * "google.")
definir $ rule_0 4 $ rule_0;
if ($ http_referer !~ * "pesquisa?q = cache ")
definir $ rule_0 5 $ rule_0;
if ($ http_referer !~ * "msn.")
definir $ rule_0 6 $ rule_0;
if ($ http_referer !~ * "yahoo.")
definir $ rule_0 7 $ rule_0;
if ($ http_user_agent !~ * "googlebot")
definir $ rule_0 8 $ rule_0;
if ($ http_user_agent !~ * "msnbot")
definir $ rule_0 9 $ rule_0;
if ($ http_user_agent !~ * "slurp")
definir $ rule_0 10 $ rule_0;
if ($ rule_0 = "10987654321")
return 403;
pausa;
Método 2: Método Valid_Referers
Referências válidas são o método mais conveniente e amplamente conhecido para bloquear referências inválidas com facilidade. Ele contém apenas duas linhas em comparação com o método anterior e é muito flexível. No entanto, é um pouco difícil de digerir, pois envolve expressões regulares e um mecanismo diferente para bloquear solicitações de referenciadores inválidos.
- Copie o seguinte snippet de código para o meio e no início do bloco de localização principal.
- Substitua a lista de nomes de domínio pelos nomes de domínio permitidos, por exemplo google, bing ou seus próprios domínios, etc.
- Salve e feche o arquivo padrão e siga 3, 4 etapas na fase de “Preparação” para fazer as alterações entrarem em vigor.
valid_referers nenhum bloqueado server_names
*.linux.com linux.* www.linux.com / sobre /~ \.linux \.;
if ($ invalid_referer)
return 403;
Ele tem principalmente dois blocos de código, valid_referers, e a expressão condicional if com a variável invalid_referer. Por padrão, este bloco de código é usado no meio e no início do bloco de localização antes da execução de qualquer outro código, mas também pode ser usado em qualquer outro lugar, como entre um bloco de código de localização com expressões regulares para detectar formatos de arquivo específicos para tornar o bloqueio relevante para os formatos de arquivo mencionados, como no método 1. Conforme explicado anteriormente, o método contém apenas dois blocos de código, o primeiro bloco de código contém 3 palavras-chave, o primeiro é "nenhum" quando o campo referer está ausente na solicitação HTTP, o segundo é "bloqueado" quando o campo referer é excluído por qualquer parte intermediária, como um proxy, firewall etc., a terceira palavra-chave é para especificar os nomes de domínio válidos.
Quando o nome de domínio começa com o símbolo “~”, ele é considerado uma expressão regular e, portanto, podem ser usados padrões muito complexos, mas pode ser difícil de entender se as expressões regulares não forem bem conhecidas. Se nenhuma das condições for atendida na instrução valid_referers, a variável invalid_referer é definida como string vazia, caso contrário, é definida como 1, o que significa se a solicitação seguinte não contém nenhum campo referer ou se nginx identificou esse campo referer por um firewall ou proxy, ou se o campo referer for definido para os domínios especificados (lista de nomes de domínio válidos), a variável referer inválida é definida como string vazia e, portanto, sua condição se não for executada. No entanto, se a solicitação vier de um domínio não especificado na expressão valid_referers como um domínio válido, ela será bloqueada.
CONCLUSÃO
Certifique-se de considerar este conteúdo e evitar hotlinking em seus sites hospedados em Nginx.