Wie lautet der Name und Speicherort der Nginx-Konfigurationsdatei (entspricht htaccess)?

30

Es gibt viele Tutorials, wie man Nginx-Umschreibregeln schreibt, um Apaches .htaccess-Datei nachzuahmen, aber ich kann nicht mit Sicherheit sagen, dass ich weiß, wie der Name oder der Speicherort dieser sogenannten Nginx-Konfigurationsdatei tatsächlich ist. Ich suche speziell nach der Nginx-Konfigurationsdatei, mit der Sie den Serverpfad und PHP-Anweisungen schreiben können. Ich benutze Ubuntu 12 Linux und Codeigniter als mein PHP-Framework.

Folgendes weiß ich bisher:

  1. Diese Datei: /etc/nginx/nginx.confTrotz ihres verlockenden Namens ist sie anscheinend nicht der Ort für Server-Direktiven.
  2. Diese Datei: /etc/nginx/sites-available/defaultscheint genau das zu sein, was ich brauche (ich kann für meine App spezifische PHP-Fehler erzeugen), aber ich kann die Codeigniter-spezifische Pfad-Routing nicht korrekt ausführen. Ist dies zuallererst die "Konfigurations" -Datei / .htaccess-Entsprechung, von der jeder spricht?
Tim Peterson
quelle
Ihr Problem liegt nicht in der Sprache PHP (dh der Programmierung in PHP), sondern in der PHP- Konfiguration auf einem bestimmten Server, was die vollständig gültigen engen Abstimmungen erklärt. Ich kann den letzten Teil Ihres Beitrags nicht kommentieren, da er sehr subjektiv und voreingenommen erscheint.
Nickb
1
Sie können herausfinden, wo sich nginx config befindet, nginx -Vwas Sie im Handbuch mit finden können man nginx. Die -VOption ist dokumentiert als "-V Gibt die Nginx-Version und die Compilerversion aus und konfiguriert die Skriptparameter." Wenn nginxnicht in Ihrem Pfad, verwenden Sie, which nginxdie den vollständigen Pfad zu $(which nginx) -V
Nginx

Antworten:

28

Ich verwende PHP mit nginx auf meinem Entwicklungsserver mit der folgenden Konfiguration:

  1. in /etc/nginx/nginx.conffügte ich hinzu: include /etc/nginx/sites-enabled/*;vor dem letzten }.

  2. Führen Sie die folgenden Befehle aus, um Ihre Standortkonfigurationen zu erstellen:

    mkdir /etc/nginx/sites-available/
    mkdir /etc/nginx/sites-enabled/
    cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/<site>
    
  3. Bearbeiten Sie die Site-Konfiguration und einige mögliche Konfigurationen (auf die ich in meinem Setup verwiesen habe): http://kbeezie.com/view/nginx-configuration-examples/

  4. Verlinken Sie auf die verfügbare Site, um sie zu aktivieren

    ln -s /etc/nginx/sites-available/<site> /etc/nginx/sites-enabled/<site>
    
  5. Denken Sie daran, dass Sie Dateien praktisch überall in die Konfigurationen einbeziehen können. Dies erleichtert das Erstellen mehrerer Sites, wenn Sie ähnliche Konfigurationen zusammenfassen möchten.

Ja, .htaccess ist vergleichbar mit dem server{}Block in Nginx, aber sie sind auch sehr unterschiedlich. nginx hat einen wesentlich einfacheren Ansatz zum Parsen von Konfigurationen und durchsucht Site-Verzeichnisse nicht nach zusätzlichen Konfigurationen, sondern nur das, was von nginx.conf angezeigt wird.

abestic9
quelle
- @Andrew dankt vielen hilfreichen Informationen !, standardmäßig hat meine /etc/nginx/nginx.confDatei schon include /etc/nginx/sites-enabled/*;ganz am Ende. Es sieht so aus, als würden diese beiden Dateien auf meinem Server miteinander kommunizieren und jetzt beschäftige ich mich mit Codeigniter-spezifischen Problemen. Verwenden Sie Codeigniter? Es gibt ein paar Pfade, die ich in den Griff bekommen muss ...
Tim Peterson
Ich verwende mein eigenes Framework, das CodeIgniter ziemlich ähnlich (wenn auch primitiver) ist. Im Moment versuche ich, meine mod_rewrite-Regexp-Regeln in das HttpRewrite-Modul von nginx zu konvertieren. Mein erster großer Durchbruch war die Überwindung der 403/404 Fehler, die nginx anzeigt, wenn ich den rootParameter falsch konfiguriert habe . Zögern Sie nicht, meine Fragen zu lesen, wenn Sie Inspiration benötigen.
abestic9
Vielen Dank für den Tipp zum Auschecken Ihrer Fragen. Ich denke, ich verstehe jetzt mehr, danke, dass du mich auf den Weg gebracht hast ...
tim peterson