Ich habe eine JavaScript-Datei auf meinem Server gehostet, auf dem Wordpress auf Nginx läuft. Ich habe die Datei entfernt, aber es gibt immer noch mehrere Anfragen von mehreren Referrern. Diese Referrer stammen von unterschiedlichen URLs und IP-Adressen.
Es gibt SEHR VIELE Anfragen und ich möchte sie blockieren, da sie anscheinend die Leistung meines Servers beeinträchtigen.
Gibt es eine Möglichkeit, diese Anfragen zu blockieren?
Antwort1
Ich kann mir vorstellen, dass die Leistung steigt, wenn Sie nginx explizit so konfigurieren, dass der Speicherort des alten JavaScripts nicht mehr gültig ist, da nginx das Dateisystem nicht mehr überprüfen muss und beim Senden eines 410-Fehlers auch die 404-Fehlerseite nicht gesendet werden muss:
location /path/to/script.js {
return 410 ;
}
HTTP-Statuscode 410: Weg
Die angeforderte Ressource ist auf dem Server nicht mehr verfügbar und es ist keine Weiterleitungsadresse bekannt. Dieser Zustand wird voraussichtlich als dauerhaft angesehen. Clients mit Linkbearbeitungsfunktionen SOLLTEN Verweise auf die Request-URI nach der Benutzergenehmigung löschen. Wenn der Server nicht weiß oder nicht feststellen kann, ob der Zustand dauerhaft ist oder nicht, SOLLTE stattdessen der Statuscode 404 (Nicht gefunden) verwendet werden. Diese Antwort kann zwischengespeichert werden, sofern nicht anders angegeben.
Die 410-Antwort soll in erster Linie die Aufgabe der Webwartung unterstützen, indem sie den Empfänger darüber informiert, dass die Ressource absichtlich nicht verfügbar ist und dass die Serverbesitzer die Entfernung von Remote-Links zu dieser Ressource wünschen. Ein solches Ereignis kommt häufig bei zeitlich begrenzten Werbediensten und bei Ressourcen vor, die Personen gehören, die nicht mehr auf der Site des Servers arbeiten. Es ist nicht notwendig, alle dauerhaft nicht verfügbaren Ressourcen als „verschwunden“ zu markieren oder die Markierung für einen bestimmten Zeitraum beizubehalten – das liegt im Ermessen des Serverbesitzers.
Antwort2
location = /deleted.js {
default_type text/plain;
return 410 "410";
#access_log off;
}
Möglicherweise möchten Sie das Zugriffsprotokoll wie oben beschrieben deaktivieren oder, wenn Sie ein neues nginx verwenden, konfigurierenaccess_log
Pufferung durchführen. Der Festplattenzugriff ist im Allgemeinen sehr teuer und ist wahrscheinlich der Grund für die Verlangsamung.
Übrigens return
impliziert die automatische Verwendung log_not_found off;
, es ist also schon besser, als die Generierung des 404-Fehlers einfach vfs zu überlassen.
Antwort3
Dies ist eine Idee, wie Sie das String-Modul von iptable verwenden können, um den Inhalt des HTTP-Headers zu prüfen. Natürlich muss es an Ihren speziellen Fall angepasst werden:http://spamcleaner.org/en/misc/w00tw00t.html
Ich bin mir jedoch nicht wirklich sicher, was schneller wäre: alle eingehenden Pakete zu prüfen oder sie von Ihrem Webserver verarbeiten zu lassen. Ich würde letztendlich stattdessen einfach eine Zeile in die Serverkonfiguration einfügen, um sofort eine 404-Fehlermeldung für diese bestimmte URL zurückzugeben. Der Datenverkehr wird mit der Zeit von selbst abnehmen, da Webmaster und Suchmaschinen ihre Links korrigieren (und das werden sie, da 404-Fehler in modernen Websuchmaschinen zu einer schlechten Positionierung führen würden).