Frage NGinx Best Practices


Welche Best Practices verwenden Sie bei der Verwendung von NGinx?


47
2018-06-04 08:29


Ursprung


Nur ein Hinweis, dass dies für eine Magento-Einrichtung nicht funktioniert. Ich untersuche immer noch die Gründe, aber ich denke, es hat etwas mit der Abfragezeichenfolge zu tun. - Jauder Ho
zwischen sch sch 100 100 sch sch 100 sch sch sch sch sch sch sch sch sch 100 100 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch sch 100 100 sch 100 sch sch 100 100 100 sch 100 sch sch 100 100 100 sch 100 sch sch 100 100 100 sch 100 sch sch 100 100 100 sch 100 100 sch 100 sch 100 100 100 sch 100 sch sch 100 100 sch 100 sch 100 100 100 sch 100 sch 100 sch sch 100 100 sch 100 sch 100 sch 100 dieser Was ist, wenn wir WordPress im Webstamm "/" haben? - rahul286


Antworten:


Wie man HTTP- und HTTPS-Blöcke kombiniert.

server {
    listen 80;
    listen 443 default ssl;

    # other directives
}

Dies wurde als Antwort auf eine andere Frage veröffentlicht. Siehe hier.


21
2018-06-05 07:53





Bei weitem, die besten Tipps, die ich je gesehen habe sind vom Autor auf seiner Fallstrungsseite: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/


21
2018-06-05 07:57





Im Allgemeinen ist die Verwendung von "if" eine schlechte Übung (laut Autor von nginx). 100 sch 100 sch 100 sch 100 sch 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch sch dieser

Kombinieren Tipp mit maintenence.html Datei und Tipp mit try_files erhalten wir:

Standort / {
    try_files /maintenance.html $ uri $ uri / @wordpress;
}

Wenn die Wartung endet, einfach mv maintenance.html von $ root.


15
2018-06-04 06:52



Dies ist nicht ideal, da /maintenance.html als eine 200 Antwort gedient wird. Sie möchten wahrscheinlich, dass Suchmaschinen erkennen, dass die Wartungsseite nicht Ihre eigentliche Website ist. Sie möchten wahrscheinlich eine 503 (Dienst vorübergehend nicht verfügbar) zurückgeben. Der einzige Weg, wie ich das herausfinden kann, ist mit einem if (-f ...) { return 503; } und error_page 503 /maintenance.html. Was denkst du? - Aaron Gibralter


Konfigurieren Sie nginx, um stärkere SSL-Verschlüsselungen zu verwenden. Standardmäßig ist SSLv2 aktiviert (das sollten Sie wenn möglich deaktivieren).

ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;

http://tumbletlog.jauderho.com/post/121851623/nginx-and-stronger-ssl


11
2018-06-04 08:11





Es ist oft effizienter zu verwenden map Direktive anstelle von regulären Ausdrücken, wenn das Stammverzeichnis für übereinstimmende Subdomains geändert wird:

server {

    server_name mysite.tld ~^.+\.mysite\.tld$;

    map $host $files {
        default            common;
        mysite.tld         common;
        www.mysite.tld     common;
        admin.mysite.tld   admin;
        system.mysite.tld  system;
        *.mysite.tld       users;
    }

    root /var/www/mysite/$files;

}

8
2018-06-04 08:32



Sie wissen, dass Sie Servername mysite.tld * .mysite.tld tun können - Unknown


Das empty_gif Modul ist auch sehr sch sch 100 100 dieser sch sch 100 100 sch sch sch sch sch sch sch sch dieser sch 100 sch sch sch sch sch dieser 100 sch sch sch sch sch sch 100 sch 100 sch sch sch 100 sch dieser 100 sch 100 sch dieser 100 sch sch sch sch 100 sch 100 sch dieser sch dieser 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch dieser 100 dieser 100 sch dieser sch dieser 100 100 100 sch dieser dieser sch sch 100 sch 100 sch 100 sch dieser 100 sch dieser 100 100 sch 100 dieser

location /token {
    empty_gif;
}

location /favicon.ico {
    empty_gif;
}

location /img/1px.gif {
    empty_gif;
} 

8
2018-06-05 08:04



Können Sie dafür ein reales Beispiel geben? Ich verstehe immer noch nicht ganz, wie es nützlich ist. - The Pixel Developer
@ The Pixel Developer, es ist nur wirklich nützlich für die Geschwindigkeit. Nginx behält die Daten für ein leeres GIF im Speicher, sodass es nie von der Festplatte geladen werden muss. - Unknown
ebenfalls access_log off; für diese Orte ist gängige Praxis - SaveTheRbtz


Wir setzen Nginx mit Chefkoch ein und benutzen dieses Kochbuch enthält Skripte für die Handhabung der nginx-Konfiguration, ähnlich wie Debian Apache2, und auch einige Beispielvorlagen mit vernünftigen Standardeinstellungen.


6
2018-06-03 19:24





Hier ist eine gute Methode, um eine Wartungsseite zurückzugeben. Alle Anfragen werden neu geschrieben und der korrekte http-Code wird zurückgegeben. (503 Dienst nicht verfügbar)

error_page 503 /maintenance.html;

location /
{
    if (-f $document_root/maintenance.html)
    {
        return 503;
    }

    try_files $uri /index.php?$args;
}

location = /maintenance.html
{
    rewrite ^ /maintenance.html break;
}

5



Eigentlich stimme ich nicht überein - ich habe einen Kommentar hinzugefügt serverfault.com/questions/18994/nginx-best-practices/ .... Im Grunde möchten Sie einen 503 Fehler zurückgeben, sonst denken Bots und Indexer, dass Ihre Wartungsseite Teil Ihrer eigentlichen Website ist ... Es ist nichts falsch an einem if Aussage, wenn Sie es richtig verwenden - die Dokumente sagen, dass ifs sind sicher, wenn Sie nur tun return xxx;. - Aaron Gibralter
Ist auch location = /maintenance.html { break; } notwendig? - Aaron Gibralter


Ab nginx 0.7.12 und höher ist ein "" in Servername verwendbar, um Anfragen ohne "Host" -Header abzufangen.

Sie können Folgendes als Catchall für undefinierte virtuelle Hosts verwenden.

server {
  server_name _ "";
}

4



Funktioniert Ihr Beispiel nur für Anfragen mit einem undefinierten vhost oder funktioniert es auch mit Anfragen mit einem unbekannten (falschen) vhost? - Benoit
@Benoit es funktioniert für alles, was nicht definiert ist. - Unknown
Wird "server_name _ *" ab nginx 0.7 nicht unterstützt? - rahul286
Bitte beachten Sie, dass dies nur teilweise zutrifft. "" wird einen MISSING-Host-Header abfangen, aber es wird keine Anfrage mit einem Host-Header abgefangen, der mit nichts übereinstimmt. Wenn Sie einen Catch-All-Serverblock benötigen, sehen Sie sich das Flag default_server unter listen an. - Martin Fjordvald