Heim >Backend-Entwicklung >PHP-Tutorial >Nginx – mehrere Fragen zum Standortmuster

Nginx – mehrere Fragen zum Standortmuster

WBOY
WBOYOriginal
2016-08-29 08:50:551271Durchsuche

Nachdem ich viele Informationen überprüft habe, verstehe ich immer noch einige Fragen nicht.

Die erste Frage ist, ob meine Standortkonfiguration so ist:

<code>location /doc {
    alias /home/user/doc;
}
</code>

Wenn ich dann auf http://localhost/doc/a.html zugreife, liest Nginx tatsächlich /home/usr/doc/a.html. Wenn ich auf http://localhost/docs/a.html oder sogar http://localhost/docsioajsfopajowejfasd zugreife, welche Datei versucht Nginx tatsächlich zu lesen?

Die zweite Frage ist, ob ich doc als Server konfiguriere und dann den Proxy umkehre.

<code>server {
    listen 8000;
    server_name doc;
    root /home/user/doc;
    
    index index.html index.htm index.nginx-debian.html;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}
</code>

Konfigurieren Sie es so auf dem Hauptserver:

<code>server {
    listen 80;
    ....
    location /doc {
        proxy_pass http://localhost:8000/;
    }
    }
</code>

Wenn in dieser Konfiguration auf http://localhost/doc/ zugegriffen wird und die Indexdatei auf eine statische Datei verweist, wird die statische Datei zu 404 und der Browser versucht, http://localhost/js/xxx.js anstelle von http://localhost/doc/js/xxx.js abzurufen hinzugefügt, nachdem das Muster >wird/

Mit
<code>location /doc/ {
            proxy_pass http://localhost:8000/;
        }
</code>
gibt es kein Problem, aber wenn es sich um die Standortkonfiguration in der ersten Frage handelt, findet der Browser

korrekt. Das hat mich verwirrt. Welche Auswirkung hat das Hinzufügen von http://localhost/doc/js/xxx.js am Ende? Warum haben Alias ​​und Proxy_Pass unterschiedliche Ergebnisse? /

Antwortinhalt:

Ich habe viele Informationen überprüft, kann aber immer noch ein paar Fragen nicht beantworten.

Die erste Frage ist, ob meine Standortkonfiguration so ist:

<code>location /doc {
    alias /home/user/doc;
}
</code>
Wenn ich dann auf

zugreife, liest Nginx tatsächlich http://localhost/doc/a.html. Wenn ich auf /home/usr/doc/a.html oder sogar http://localhost/docs/a.html zugreife, welche Datei versucht Nginx tatsächlich zu lesen? http://localhost/docsioajsfopajowejfasd

Zweite Frage: Wenn ich doc als Server konfiguriere und dann den Proxy umkehre.

<code>server {
    listen 8000;
    server_name doc;
    root /home/user/doc;
    
    index index.html index.htm index.nginx-debian.html;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}
</code>
Konfigurieren Sie es so auf dem Hauptserver:

<code>server {
    listen 80;
    ....
    location /doc {
        proxy_pass http://localhost:8000/;
    }
    }
</code>
Wenn in dieser Konfiguration auf

zugegriffen wird und die Indexdatei auf eine statische Datei verweist, wird die statische Datei zu http://localhost/doc/ und der Browser versucht, 404 anstelle von http://localhost/js/xxx.js abzurufen hinzugefügt, nachdem das Muster >wirdhttp://localhost/doc/js/xxx.js / Mit

gibt es kein Problem, aber wenn es sich um die Standortkonfiguration in der ersten Frage handelt, findet der Browser
<code>location /doc/ {
            proxy_pass http://localhost:8000/;
        }
</code>
korrekt. Das hat mich verwirrt. Welche Auswirkung hat das Hinzufügen von

am Ende? Warum haben Alias ​​und Proxy_Pass unterschiedliche Ergebnisse? http://localhost/doc/js/xxx.js

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn