Frage

Ich habe eine Instanz von Nginx, die mehrere Websites bedient.Die erste ist eine Statusmeldung zur IP-Adresse des Servers.Die zweite ist eine Admin-Konsole admin.domain.com.Diese funktionieren großartig.Jetzt möchte ich, dass alle anderen Domain-Anfragen an eine einzige gehen index.php – Ich habe viele Domänen und Subdomänen und es ist unpraktisch, sie alle in einer Nginx-Konfiguration aufzulisten.

Bisher habe ich es mit der Einstellung versucht server_name Zu * aber das schlug als ungültiger Platzhalter fehl. *.* funktioniert, bis ich die anderen Serverblöcke hinzufüge, dann vermute ich, dass es zu Konflikten mit ihnen kommt.

Gibt es eine Möglichkeit, einen Catch-All-Serverblock in Nginx auszuführen, nachdem andere Sites definiert wurden?

Hinweis:Ich bin kein Spammer, das sind echte Seiten mit nützlichen Inhalten, sie werden nur von demselben CMS aus einer Datenbank betrieben!

War es hilfreich?

Lösung

Ändern Sie die Abhöroption in Ihrem Catch-All-Serverblock in diese Option.(Hinzufügen default_server) Dies nimmt alle Ihre nicht definierten Verbindungen (auf dem angegebenen Port) entgegen.

listen       80  default_server;

wenn Sie alles nach index.php verschieben möchten, wenn die Datei oder der Ordner nicht existiert;

try_files                       $uri /$uri /index.php;

Andere Tipps

Ein einfacher Unterstrich funktioniert auch: generasacodicetagpre.

Quelle: http://ginx.org/de/docs/http/server_names.HTML

Das wird funktionieren: generasacodicetagpre.

für mich irgendwie definieren defeind_server funktionierte nicht.Ich habe es gelöst von generasacodicetagpre.

Verwenden des regulären Ausdrucks von allen.

Jetzt können Sie Maske verwenden: generasacodicetagpre.

Look mehr hierher: http://ginx.org/de/docs/http/Server_names.html

Nur 1 server Richtlinie

Aus Nginx listen Dokumente

Der Parameter von Default_Server veranlasst, falls vorhanden, der Server zum Standardserver für die angegebene Adresse: Portpaar.Wenn keiner der Anweisungen den Parameter default_server hat, ist der erste Server mit der Adresse: Portpaar der Standardserver für dieses Paar.

Wenn Sie nur 1 haben server Direktive, die alle Anfragen bearbeitet, Sie müssen nichts festlegen.


Mehrere server Richtlinie

Wenn Sie alle Anfragen mit den angegebenen übereinstimmen möchten server Direktive, einfach hinzufügen default_server Parameter zu listen, Nginx wird dies verwenden server Direktive als Standard.

server {
    listen 80 default_server;
}

Um server_name _;

Aus Nginx-Dokumente

In Catch-All-Server-Beispielen ist der seltsame Name „_“ zu sehen:

server {
    listen       80  default_server;
    server_name  _;
    return       444;
}

Dieser Name hat nichts Besonderes, es ist nur eine von unzähligen ungültigen Domain -Namen, die sich niemals mit einem richtigen Namen überschneiden.Andere ungültige Namen wie „--“ und „!@#“ können ebenfalls verwendet werden.

Es spielt keine Rolle, was server_name Sie legen fest, es ist nur ein Ungültiger Domainname.

Wenn Sie Anfragen auch mit leer abfangen möchten Host Header (der erlaubt ist HTTP/1.0) können Sie sowohl Regex als auch Empty verwenden server_name:

server {
    listen      80;
    server_name ~. "";
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top