Preparación
En el segmento de preparación, se toman las instrucciones generales para ambos métodos posteriores. Obviamente, es importante tener una consola para acceder al servidor a través de SSH y un editor de texto adecuado como nano para abrir el archivo de configuración de Nginx. Una vez adquiridos ambos, utilice los siguientes comandos para abrir, guardar y aplicar los cambios. Los siguientes pasos asumen que el usuario ya accedió al servidor a través de SSH.
- Escriba el siguiente comando para abrir el archivo de configuración predeterminado de Nginx. Si cada dominio tiene un archivo de configuración separado, use su nombre en lugar del predeterminado.
- En el archivo predeterminado o de configuración, escriba los códigos indicados en uno de los métodos posteriores. Asegúrate de usar solo uno de ellos.
- Utilice el siguiente comando para probar el archivo de configuración antes de enviarlo al modo en vivo.
- Si todo está en el orden correcto, continúe y escriba el siguiente comando para aplicar los cambios para que surtan efecto.
Método 1: Método general
El método general es muy fácil de implementar y comprender, ya que contiene solo un bloque de ubicación. Además, bloquea las solicitudes a ciertos formatos de archivo solo en lugar de bloquear todas las solicitudes de referencias no válidas al servidor.
- Copie el siguiente fragmento de código.
- Abra el archivo predeterminado de nginx como se ve en la fase de "Preparación".
- Pegue el fragmento de código copiado debajo del primer bloque de ubicación que se encuentra en el archivo predeterminado. En nginx, la expresión regular que no distingue entre mayúsculas y minúsculas (~ *) siempre tiene prioridad antes de la barra inclinada (/) y, por lo tanto, el siguiente fragmento de código se ejecuta antes del bloque de ubicación de la barra inclinada.
- Guarde y cierre el archivo predeterminado, y luego siga 3, 4 pasos en la fase de "Preparación" para que los cambios surtan efecto.
En el siguiente ejemplo, bloquea las solicitudes a archivos css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf y eot. Hay 10 declaraciones condicionales en el bloque de ubicación. La primera declaración condicional permite que los recursos se vean directamente a través del navegador web, 2Dakota del Norte y 3rd Los bloques permiten que los recursos se vean a través del sitio original (subdominios desnudos y www), el resto de los bloques excepto la búsqueda?q y el último bloque permiten que los rastreadores de los motores de búsqueda accedan e indexen los recursos, lo cual es muy importante para indexar las imágenes tanto en las imágenes de Google como en las imágenes de Bing. La búsqueda?q permite que el servicio de caché de Google acceda y guarde los recursos junto con la página y, por lo tanto, se puede acceder a la página directamente a través del resultado de búsqueda de Google cuando el sitio está fuera de línea.
ubicación ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $si ($ http_referer !~ "^ $")
establecer $ regla_0 1 $ regla_0;
si ($ http_referer !~ "^ http: // nucuta.com /.PS
establecer $ regla_0 2 $ regla_0;
si ($ http_referer !~ "^ http: // nucuta.com $ ")
establecer $ regla_0 3 $ regla_0;
si ($ http_referer !~ * "google.")
establecer $ regla_0 4 $ regla_0;
si ($ http_referer !~ * "buscar?q = caché ")
establecer $ regla_0 5 $ regla_0;
si ($ http_referer !~ * "msn.")
establecer $ regla_0 6 $ regla_0;
si ($ http_referer !~ * "yahoo.")
establecer $ regla_0 7 $ regla_0;
si ($ http_user_agent !~ * "googlebot")
establecer $ regla_0 8 $ regla_0;
si ($ http_user_agent !~ * "msnbot")
establecer $ regla_0 9 $ regla_0;
si ($ http_user_agent !~ * "sorber")
establecer $ regla_0 10 $ regla_0;
if ($ rule_0 = "10987654321")
return 403;
rotura;
Método 2: Método Valid_Referers
Referencias válidas es el método más conveniente y ampliamente reconocido para bloquear referencias inválidas con facilidad. Contiene solo dos líneas en comparación con el método anterior y es muy flexible. Sin embargo, es un poco difícil de digerir ya que involucra expresiones regulares y un mecanismo diferente para bloquear solicitudes de referentes no válidos.
- Copie el siguiente fragmento de código en el medio y al principio del bloque de ubicación principal.
- Reemplace la lista de nombres de dominio con los nombres de dominio permitidos, por ejemplo, google, bing o sus propios dominios, etc.
- Guarde y cierre el archivo predeterminado y luego siga 3 o 4 pasos en la fase de "Preparación" para que los cambios surtan efecto.
valid_referers ninguno bloqueado server_names
*.linux.com linux.* www.linux.com / about /~ \.linux \.;
if ($ invalid_referer)
return 403;
Tiene principalmente dos bloques de código, valid_referers y la expresión condicional if con variable invalid_referer. De forma predeterminada, este bloque de código se usa en el medio y al principio del bloque de ubicación antes de la ejecución de cualquier otro código, pero también se puede usar en cualquier otro lugar, como entre un bloque de código de ubicación con expresiones regulares para detectar formatos de archivo específicos para que el bloqueo sea relevante para los formatos de archivo antes mencionados, como en el método 1. Como se explicó anteriormente, el método contiene solo dos bloques de código, el primer bloque de código contiene 3 palabras clave, el primero es "ninguno" cuando falta el campo de referencia en la solicitud HTTP, el segundo está "bloqueado" cuando se elimina el campo de referencia. por cualquier intermediario, como un proxy, firewall, etc., la tercera palabra clave es para especificar los nombres de dominio válidos.
Cuando el nombre de dominio comienza con el símbolo "~", se considera una expresión regular y, por lo tanto, se pueden usar patrones muy complejos, pero puede ser difícil de entender si las expresiones regulares no se conocen bien. Si no se cumple ninguna de las condiciones en la declaración valid_referers, la variable invalid_referer se establece en una cadena vacía; de lo contrario, se establece en 1, lo que significa si la próxima solicitud no contiene ningún campo de referencia o si nginx identificó que el campo de referencia se elimina por un firewall o un proxy, o si el campo de referencia se establece en los dominios especificados (lista de nombres de dominio válida), la variable de referencia no válida se establece en una cadena vacía y, por lo tanto, su condición if no se ejecuta. Sin embargo, si la solicitud proviene de un dominio que no está especificado en la expresión valid_referers como un dominio válido, entonces está bloqueado.
CONCLUSIÓN
Asegúrese de considerar este contenido y evitar enlaces directos en sus sitios alojados en Nginx.