Ich möchte einen Standard-Catch-All-Serverblock festlegen, um alle Hostnamen zu verarbeiten, die nicht meinen genauen server_name
Werten entsprechen. Aber ich bin mir nicht sicher, welches ich verwenden soll.
server {
listen 80 default_server;
server_name ""; # this is by default if no server_name specified
return 444;
}
oder
server {
listen 80 default_server;
server_name _;
return 444;
}
Ich habe getestet und sie scheinen sich gleich zu verhalten. Gibt es einen Unterschied zwischen ihnen?
nginx
virtualhost
NARKOZ
quelle
quelle
Antworten:
Kurze Antwort: Ja, es gibt einen Unterschied zwischen
server_name "";
undserver_name _;
Lange Antwort: Definiert
server_name "";
eine Übereinstimmung für eine Anforderung ohnehost
Header seit 0.8.48 und wird seit 0.7.12 unterstützt.https://nginx.org/en/docs/http/request_processing.html
Definiert auf der anderen Seite
server_name _;
einen ungültigen Servernamen, der sich nie mit einem echten Namen überschneidet. Es ist nur eine Nichtübereinstimmung. Falls keine Übereinstimmungen vorliegen, wählt nginx den ersten Serverblock {} aus und verwendet diesen.server_name _;
Abschließend können Sie für Catch-All-Server-Block verwenden, aber nichtserver_name "";
.Referenz - /programming/9454764/nginx-server-name-wildcard-or-catch-all https://blog.gahooa.com/2013/08/21/nginx-how-to-specify -a-Standard-Server /
quelle
HTTP 1.0
(-0
Parameter incurl
)server_name ""
verwenden müssen.curl -v -0 -H "Host:" http://localhost
. Siehe die akzeptierte Antwort von serverfault.com/a/920459/485927server_name _;
Richtlinie , wenn wirlisten
mitdefault_server
? Ist dies zu Informationszwecken?