Nginx relativer Pfad zum Einschließen

10

Gibt es in einer Nginx-Conf-Datei eine Möglichkeit, die includezu einer anderen Conf-Datei relativ zur aktuellen Conf-Datei anzugeben?

Ich würde gerne schreiben:

server {
  listen       80;
  server_name  localhost;

  include "../apis/basic.conf";

...
} 
Alex Rothberg
quelle
2
Nee. Alle Pfade sind entweder absolut oder relativ zum Präfixpfad nginx.org/en/docs/configure.html
Alexey Ten
1
Das Erraten Ihres Datei- und Ordnerlayouts include apis/basic.conf;würde wahrscheinlich einfach funktionieren. Beispielsweise hierfür ist relativ zu der Config - Wurzel, so enthält diese Datei .
AD7six

Antworten:

4

Die Nginx-Dokumente für die includeDirektive dokumentieren nicht, wie relative Pfade behandelt werden (ab Release 1.9.15). Beim Lesen des C-Codes muss der Pfad absolut oder relativ zum Präfixpfad sein, wie Alexey Ten in einem Kommentar angeboten hat.

Hier ist ein verwandter Link zum Quellcode .

Mark Stosberg
quelle
1
Ich habe gerade auf Nginx 1.10.3 getestet. Einstellen der -pauf .und versuchte , einschließlich ./nginx.confaus einer Konfigurationsdatei gespeichert /tmp. Es irrt, indem es mir sagt, dass es nicht finden kann /tmp/./nginx.conf. Entweder macht die -pOption das nicht, oder die Aufnahme schließt nur relativ zur Konfigurationsdatei ein, oder mein Nginx ist kaputt.
CMCDragonkai
Die -pOption wirkt sich nur darauf aus, wo der nginxBefehl nach der Konfigurationsdatei sucht. Mit nginx -p . -c ./nginx.confwird der Befehl nginx gesucht ./nginx.conf, andernfalls wird ohne ihn der Präfixpfad für den Befehl nginx gesucht ./nginx.conf.
CMCDragonkai
2

Ähnlich wie Alexy Ten oben kommentiert hat, wird das Standardpräfix verwendet. Gemäß diesem StackOverflow-Beitrag: https://stackoverflow.com/a/25486871/1684819 kann die Option -p bereitgestellt werden, um zu deklarieren, wo auf alle relativen Pfade verwiesen wird, anstatt auf den standardmäßig kompilierten Pfad.

xobes
quelle