Heim Betrieb und Instandhaltung Nginx Was sind die Konfigurationsblöcke des Nginx-Webservers?

Was sind die Konfigurationsblöcke des Nginx-Webservers?

Jun 29, 2020 pm 04:44 PM
nginx web服务器

Nginx-Webserver-Konfigurationsblöcke umfassen: 1. Einrichten des virtuellen Servers 3. Verwenden von Variablen; 5. Umschreiben des URI; HTTP-Antwort neu schreiben; 7. Fehler behandeln.

Was sind die Konfigurationsblöcke des Nginx-Webservers?

Nginx-Webserver-Konfigurationsblöcke sind:

1. Virtuellen Server einrichten

NGINX-Konfigurationsdatei muss mindestens eine Serveranweisung enthalten, um den virtuellen Server zu definieren. Wenn NGINX eine Anfrage bearbeitet, wählt es zunächst den virtuellen Server aus, der die Anfrage bedient.

Virtuelle Server werden durch Serveranweisungen im http-Kontext definiert, zum Beispiel:

http {
    server {
        # Server configuration
    }
}
Nach dem Login kopieren

Mehrere Serveranweisungen können zum http-Kontext hinzugefügt werden, um mehrere virtuelle Server zu definieren.

Empfohlenes Tutorial: Nginx-Schnellstart-Tutorial

serverDer Konfigurationsblock enthält normalerweise eine Listen-Direktive, um den Server anzugeben, der auf Anfragen lauscht IP-Adresse und Port (oder Unix-Domänen-Socket und -Pfad). Es werden sowohl IPv4- als auch IPv6-Adressen akzeptiert; schließen Sie die eckigen Klammern ein (.

Das folgende Beispiel zeigt die Konfiguration eines Servers, der die IP-Adresse 127.0.0.1 und Port 8080 überwacht: Verwenden Sie Standardports. Ebenso, wenn eine Adresse ist Wenn keine Listen-Anweisung enthalten ist, ist der „Standard“-Port

und der „Standard“-Port

Wenn es mehrere Server gibt, die mit der angeforderten IP-Adresse und dem angeforderten Port übereinstimmen, testet NGINX das angeforderte Host-Header-Feld anhand der server_name-Direktive im Serverblock. Der server_name-Parameter kann ein vollständiger (exakter) Name sein 80/tcpEin Platzhalter ist eine Zeichenfolge, die ein Sternchen (*) am Anfang, am Ende oder an beiden enthält. NGINX verwendet eine Tilde (~) davor ein genauer Name. 8000/tcp

server {
    listen 127.0.0.1:8080;
    # The rest of server configuration
}
Nach dem Login kopieren

Wenn der Host-Header mit mehreren Namen übereinstimmt, sucht NGINX nach den Namen in der folgenden Reihenfolge und verwendet den ersten gefundenen Namen, um einen auszuwählen:

Genauer Name (vollständiger genauer Name)

  • Der längste Platzhalter, der mit einem Sternchen beginnt, zum Beispiel: * .example.org

  • Der längste Platzhalter, der mit einem Sternchen endet, wie zum Beispiel: mail.*

  • Der erste passende reguläre Ausdruck (in der Reihenfolge, in der er in der Konfigurationsdatei erscheint)

  • Wenn das Host-Header-Feld nicht mit dem Servernamen übereinstimmt, leitet NGINX die Anforderung an den Standardserver für den Anforderungsankunftsport weiter. Der Standardserver ist die conf-Datei, es sei denn, Sie fügen den Parameter listen_server in die Listen-Direktive ein Um den Server explizit als Standard anzugeben, zeigen wir hier die Konfiguration zweier virtueller Maschinen: vhost1.com und vhost2.com Das Verzeichnis der Website vhost1.com befindet sich in

    und das Hauptverzeichnis der Website vhost2.com befindet sich in

    :
  • server {
        listen      80;
        server_name example.org www.example.org;
        ...
    }
    Nach dem Login kopieren

2. Konfigurationsort

/data/www/vhost1NGINX kann Datenverkehr an verschiedene Proxys senden oder verschiedene Dateien basierend auf dem Anforderungs-URI bereitstellen. Diese Blöcke werden mithilfe der Standortanweisung in der Serveranweisung definiert. /data/www/vhost2Sie können beispielsweise drei Standortblöcke definieren, um den virtuellen Server anzuweisen um einige Anfragen an einen Proxyserver zu senden, andere Anfragen an einen anderen Proxyserver zu senden und die verbleibenden Anfragen durch Weitergabe von Dateien aus dem lokalen Dateisystem zu bearbeiten.

Der NGINX-Test fordert den URI basierend auf den Parametern aller Standortanweisungen an und wendet die im übereinstimmenden Standort definierten Anweisungen an. Innerhalb jedes Standortblocks ist es normalerweise (mit einigen Ausnahmen) möglich, zusätzliche Standortanweisungen zu platzieren, um die Bearbeitung einer bestimmten Gruppe von Anfragen weiter zu verfeinern. Hinweis: In diesem Tutorial-Artikel bezieht sich das Wort „Standort“ auf einen einzelnen Standortkontext. Die

location-Direktive verfügt über zwei Arten von Parametern: Präfixzeichenfolge (Pfadname) und reguläre Ausdrücke. Damit ein Anforderungs-URI mit einer Präfixzeichenfolge übereinstimmt, muss er mit der Präfixzeichenfolge beginnen.

Der folgende Beispielspeicherort mit dem Parameter pathname stimmt mit einem Anforderungs-URI überein, der mit /some/path/ beginnt, z. B.

, der nicht mit

übereinstimmt, da

nicht am Anfang von vorkommt dieser URI.

server {
    listen    80    default_server;
    ...
}
Nach dem Login kopieren

Regulären Ausdrücken wird eine Tilde (~) vorangestellt, um die Groß-/Kleinschreibung zu berücksichtigen, oder eine Tilde (~*), um die Groß-/Kleinschreibung zu berücksichtigen. Das folgende Beispiel gleicht einen URI ab, der die Zeichenfolge .html oder .html mit einem beliebigen Speicherort enthält.

server {
    listen       80;
    server_name vhost1.com www.vhost1.com;
    index index.html index.html;
    root  /data/www/vhost1;
    access_log  /var/log/vhost1.com.log;
}
server {
    listen       80;
    server_name vhost2.com www.vhost2.com;
    index index.html index.html;
    root  /data/www/vhost2;
    access_log  /var/log/vhost2.com.log;
}
Nach dem Login kopieren

Um den Ort zu finden, der am besten zum URI passt, vergleicht NGINX zunächst den URI mit dem Ort der Präfixzeichenfolge. Suchen Sie dann mit einem regulären Ausdruck nach dem Standort.

/some/path/document.htmlEs sei denn, der Modifikator ^~ wird verwendet, um dem regulären Ausdruck eine höhere Priorität zu geben. Unter den Präfixzeichenfolgen wählt NGINX die spezifischste Zeichenfolge (d. h. die längste und vollständigste Zeichenfolge) aus. Die genaue Logik für die Auswahl, wo Anfragen bearbeitet werden sollen, ist unten angegeben: /my-site/some/path/some/path

Testen Sie die Präfixzeichenfolge für alle URIs. Der Modifikator

= (Gleichheitszeichen) definiert eine genaue Übereinstimmung zwischen dem URI und der Präfixzeichenfolge. Wenn eine genaue Übereinstimmung gefunden wird, wird die Suche beendet.

  • 如果^~(插入符号)修饰符预先添加最长匹配前缀字符串,则不会检查正则表达式。

  • 存储最长匹配的前缀字符串。

  • 根据正则表达式测试URI。

  • 断开第一个匹配的正则表达式并使用相应的位置。

  • 如果没有正则表达式匹配,则使用与存储的前缀字符串相对应的位置。

  • =修饰符的典型用例是/(正斜杠)的请求。 如果请求/是频繁的,则指定=/作为location指令的参数加速处理,因为搜索匹配在第一次比较之后停止。

    location = / {
        ...
    }
    Nach dem Login kopieren

    location上下文可以包含定义如何解析请求的指令 - 提供静态文件或将请求传递给代理的服务器。 在以下示例中,匹配第一个location上下文的请求将从/data/images目录中提供文件,并将匹配第二个位置的请求传递给承载 www.example.com 域内容的代理服务器。

    server {
        location /images/ {
            root /data;
        }
        location / {
            proxy_pass http://www.example.com;
        }
    }
    Nach dem Login kopieren

    root指令指定要在其中搜索要提供的静态文件的文件系统路径。 与该位置相关联的请求URI将附加到路径,以获取要提供的静态文件的全名。 在上面的示例中,要响应/images/logo.png的请求,NGINX提供服务器本地实际对应文件是:/data/images/logo.png。

    proxy_pass指令将请求传递给使用配置的URL访问代理服务器。然后将代理服务器的响应传回客户端。在上面的示例中,所有不以/images/开头的URI的请求都将被传递给代理的服务器(也就是:www.example.com)。

    3. 使用变量

    可以使用配置文件中的变量,使NGINX进程的请求根据定义的情况而有所不同。 变量是在运行时计算的命名值,用作指令的参数。 一个变量由它的名字开头的$(美元)符号表示。 变量根据NGINX的状态定义信息,例如正在处理的请求的属性。

    有许多预定义的变量,如核心HTTP变量,您可以使用set,map和geo指令定义自定义变量。 大多数变量在运行时计算的,并包含与特定请求相关的信息。 例如,$remote_addr包含客户端IP地址,$uri保存当前的URI值。

    4. 返回特定状态码

    一些网站URI需要立即返回具有特定错误或重定向代码的响应,例如当页面被暂时移动或永久移动时。 最简单的方法是使用return指令。 例如返回未找到的404状态码:

    location /wrong/url {
        return 404;
    }
    Nach dem Login kopieren

    返回的第一个参数是响应代码。可选的第二个参数可以是重定向的URL(代码301,302,303和307)或在响应体中返回文本。 例如:

    location /permanently/moved/url {
        return 301 http://www.example.com/moved/here;
    }
    Nach dem Login kopieren

    返回指令可以包含在 location 和 server 上下文中。

    重写URI请求

    可以通过使用rewrite指令在请求处理期间多次修改请求URI,该指令具有一个可选参数和两个必需参数。 第一个(必需)参数是请求URI必须匹配的正则表达式。 第二个参数是用于替换匹配URI的URI。 可选的第三个参数是可以停止进一步重写指令的处理或发送重定向(代码301或302)的标志。例如:

    location /users/ {
        rewrite ^/users/(.*)$ /show?user=$1 break;
    }
    Nach dem Login kopieren

    如该示例所示,用户通过匹配正则表达式捕获第二个参数。

    您可以在location 和 server上下文中包含多个rewrite指令。 NGINX按照它们发生的顺序逐个执行指令。 当选择该上下文时,server上下文中的rewrite指令将被执行一次。

    在NGINX处理一组rewrite指令之后,它根据新的URI选择一个location上下文。 如果所选location块包含rewrite指令,则依次执行它们。 如果URI与其中任何一个匹配,则在处理所有定义的rewrite指令之后,将搜索新location块。

    以下示例显示了与返回指令相结合的rewrite指令。

    server {
        ...
        rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
        rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
        return  403;
        ...
    }
    Nach dem Login kopieren

    此示例配置区分两组URI。 诸如/download/some/media/file之类的URI更改为/download/some/mp3/file.mp3。由于最后一个标志,所以跳过后续指令(第二次rewrite和return指令),但NGINX继续处理该请求,该请求现在具有不同的URI。类似地,诸如/download/some/audio/file的URI被替换为/download/some/mp3/file.ra。 如果URI与rewrite指令不匹配,则NGINX将403错误代码返回给客户端。

    有两个中断处理重写指令的参数:

    last - 停止执行当前服务器或位置上下文中的重写指令,但是NGINX会搜索与重写的URI匹配的位置,并且应用新位置中的任何重写指令(URI可以再次更改,往下继续匹配)。

    break - 像break指令一样,在当前上下文中停止处理重写指令,并取消搜索与新URI匹配的位置。新位置(location)块中的rewrite指令不执行。

    5. 重写HTTP响应

    有时您需要重写或更改HTTP响应中的内容,将一个字符串替换为另一个字符串。 您可以使用sub_filter指令来定义要应用的重写。 该指令支持变量和替代链,使更复杂的更改成为可能。

    例如,您可以更改引用除代理服务器之外的绝对链接:

    location / {
        sub_filter      /blog/ /blog-staging/;
        sub_filter_once off;
    }
    Nach dem Login kopieren

    另一个示例将方法从http://更改为http://,并从请求头域替换本地主机地址到主机名。 sub_filter_once指令告诉NGINX在一个位置(location)内连续应用sub_filter伪指令:

    location / {
        sub_filter     'href="http://127.0.0.1:8080/'    'href="http://$host/';
        sub_filter     'img src="http://127.0.0.1:8080/' 'img src="http://$host/';
        sub_filter_once on;
    }
    Nach dem Login kopieren

    请注意,如果发生另一个sub_filter匹配,则使用sub_filter修改的响应部分将不再被替换。

    处理错误

    使用error_page指令,您可以配置NGINX返回自定义页面以及错误代码,替换响应中的其他错误代码,或将浏览器重定向到其他URI。 在以下示例中,error_page指令指定要返回404页面错误代码的页面(/404.html)。

    error_page 404 /404.html;
    Nach dem Login kopieren

    请注意,此伪指令并不立即返回该错误(返回指令执行该操作),而仅仅是指定发生时如何处理错误。 错误代码可以来自代理服务器,或者在NGINX处理期间发生(例如,当NGINX找不到客户端请求的文件时,显示404对应的结果)。

    在以下示例中,当NGINX找不到页面时,它会将代码301替换为代码404,并将客户端重定向http:/example.com/new/path.html。 当客户端仍尝试访问其旧URI的页面时,此配置非常有用。 301代码通知浏览器页面已经永久移动,并且需要在返回时自动替换旧地址。

    location /old/path.html {
        error_page 404 =301 http:/example.com/new/path.html;
    }
    Nach dem Login kopieren

    以下配置是在未找到文件时将请求传递给后端的示例。 因为在error_page指令的等号之后没有指定状态代码,所以对客户机的响应具有代理服务器返回的状态代码(不一定是404)。

    server {
        ...
        location /images/ {
            # Set the root directory to search for the file
            root /data/www;
            # Disable logging of errors related to file existence
            open_file_cache_errors off;
            # Make an internal redirect if the file is not found
            error_page 404 = /fetch$uri;
        }
        location /fetch/ {
            proxy_pass http://backend/;
        }
    }
    Nach dem Login kopieren

    当没有找到文件时,error_page指令指示NGINX进行内部重定向。 error_page指令的最终参数中的$uri变量保存当前请求的URI,该URI在重定向中被传递。

    例如,如果没有找到/images/some/file,它将被替换为/fetch/images/some/file,并且新的搜索位置(location)开始。最后请求最终在第二个location上下文中,并被代理到http://backend/

    如果没有找到文件,则open_file_cache_errors指令可防止写入错误消息。 因为丢失的文件可被正确地处理,但这不是必需的。

    Das obige ist der detaillierte Inhalt vonWas sind die Konfigurationsblöcke des Nginx-Webservers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    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

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    So konfigurieren Sie den Namen des Cloud -Server -Domänennamens in Nginx So konfigurieren Sie den Namen des Cloud -Server -Domänennamens in Nginx Apr 14, 2025 pm 12:18 PM

    So konfigurieren Sie einen Nginx -Domänennamen auf einem Cloud -Server: Erstellen Sie einen Datensatz, der auf die öffentliche IP -Adresse des Cloud -Servers zeigt. Fügen Sie virtuelle Hostblöcke in die NGINX -Konfigurationsdatei hinzu, wobei der Hörport, Domänenname und das Root -Verzeichnis der Website angegeben werden. Starten Sie Nginx neu, um die Änderungen anzuwenden. Greifen Sie auf die Konfiguration des Domänennamens zu. Weitere Hinweise: Installieren Sie das SSL -Zertifikat, um HTTPS zu aktivieren, sicherzustellen, dass die Firewall den Verkehr von Port 80 ermöglicht, und warten Sie, bis die DNS -Auflösung wirksam wird.

    So überprüfen Sie die Nginx -Version So überprüfen Sie die Nginx -Version Apr 14, 2025 am 11:57 AM

    Die Methoden, die die Nginx -Version abfragen können, sind: Verwenden Sie den Befehl nginx -v; Zeigen Sie die Versionsrichtlinie in der Datei nginx.conf an. Öffnen Sie die Nginx -Fehlerseite und sehen Sie sich den Seitentitel an.

    So starten Sie den Nginx -Server So starten Sie den Nginx -Server Apr 14, 2025 pm 12:27 PM

    Das Starten eines Nginx-Servers erfordert unterschiedliche Schritte gemäß verschiedenen Betriebssystemen: Linux/UNIX-System: Installieren Sie das NGINX-Paket (z. B. mit APT-Get oder Yum). Verwenden Sie SystemCTL, um einen Nginx -Dienst zu starten (z. B. sudo systemctl start nginx). Windows -System: Laden Sie Windows -Binärdateien herunter und installieren Sie sie. Starten Sie Nginx mit der ausführbaren Datei nginx.exe (z. B. nginx.exe -c conf \ nginx.conf). Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie auf die Server -IP zugreifen

    So überprüfen Sie, ob Nginx gestartet wird So überprüfen Sie, ob Nginx gestartet wird Apr 14, 2025 pm 01:03 PM

    So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

    So überprüfen Sie den Namen des Docker -Containers So überprüfen Sie den Namen des Docker -Containers Apr 15, 2025 pm 12:21 PM

    Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

    So konfigurieren Sie Nginx in Windows So konfigurieren Sie Nginx in Windows Apr 14, 2025 pm 12:57 PM

    Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

    So starten Sie einen Container von Docker So starten Sie einen Container von Docker Apr 15, 2025 pm 12:27 PM

    Startschritte des Docker -Containers: Ziehen Sie das Containerbild: Führen Sie "Docker Pull [Mirror Name]" aus. Erstellen eines Containers: Verwenden Sie "Docker erstellen [Optionen] [Spiegelname] [Befehle und Parameter]". Starten Sie den Container: Führen Sie "Docker Start [Container Name oder ID]" aus. Containerstatus überprüfen: Stellen Sie sicher, dass der Container mit "Docker PS" ausgeführt wird.

    So führen Sie Nginx Apache aus So führen Sie Nginx Apache aus Apr 14, 2025 pm 12:33 PM

    Um Nginx dazu zu bringen, Apache auszuführen, müssen Sie: 1. Installieren von Nginx und Apache; 2. Konfigurieren Sie den Nginx -Agenten; 3.. Starten Sie Nginx und Apache; 4. Testen Sie die Konfiguration, um sicherzustellen, dass Sie den Apache -Inhalt nach dem Zugriff auf den Domänennamen sehen können. Darüber hinaus müssen Sie auf andere Angelegenheiten wie die Anpassung der Portnummer, die virtuelle Hostkonfiguration und die SSL/TLS -Einstellungen achten.

    See all articles