1. Nginx installieren

1.1 Die stabile Version wählen

Wir kompilieren und installieren Nginx, um unsere eigenen Module anzupassen, auf einer CentOS 6.2 x86_64-Maschine. Installieren Sie zuerst die fehlenden Abhängigkeitspakete:

# yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

Wenn diese Pakete in yum nicht verfügbar sind, können Sie den Quellcode herunterladen, um sie zu kompilieren und zu installieren. Achten Sie beim Kompilieren auf das Standard-Installationsverzeichnis und stellen Sie sicher, dass die dynamischen Bibliotheksdateien gefunden werden, wenn Sie Nginx im Folgenden installieren (ldconfig).

nginx 服务器安装及配置文件详解

Vonhttp://nginx.org/en/download.htmlLaden Sie die stabile Version nginx-1.6.3.tar.gz nach /usr/local/src herunter und entpacken Sie sie.

Zur weiteren Vorbereitung laden wir außerdem 2 Plugin-Module herunter:nginx_upstream_check_module-0.3.0.tar.gz— Status der Backend-Server prüfen,nginx-goodies-nginx-sticky-module-ng-bd312d586752.tar.gz(Es wird empfohlen, das Verzeichnis nach dem Entpacken unter /usr/local/src in nginx-sticky-module-ng-1.2.5 umzubenennen) — für das BackendLoad BalancingLösen Sie das Session-Sticky-Problem (bei Verwendung mit dem upstream_check-Modul ist ein zusätzlicher Patch erforderlich, bitte sieheNginx-Load-Balancing-Konfiguration in der Praxis)。

Bitte beachten Sie die Versionskompatibilität zwischen Plugins und Nginx. Im Allgemeinen gilt: Je neuer das Plugin, desto besser; Nginx muss nicht die neueste Version anstreben, Stabilität geht vor. nginx-1.4.7, nginx-sticky-module-1.1, nginx_upstream_check_module-0.2.0, diese Kombination ist ebenfalls in Ordnung. sticky-1.1 mit nginx-1.6-Versionen verursachte Kompilierungsfehler, weil die Aktualisierungen nicht Schritt hielten. (Sie können direkt Tengine verwenden, das diese Module standardmäßig enthält)

[root@cachets nginx-1.6.3]# pwd
/usr/local/src/nginx-1.6.3
[root@cachets nginx-1.6.3]# ./configure --prefix=/usr/local/nginx-1.6 --with-pcre /
> --with-http_stub_status_module --with-http_ssl_module /
> --with-http_gzip_static_module --with-http_realip_module /
> --add-module=../nginx_upstream_check_module-0.3.0
[root@cachets nginx-1.6.3]# make && make install

1.2 Beschreibung der gängigen Kompilierungsoptionen

Die meisten der häufig verwendeten Module von Nginx werden beim Kompilieren standardmäßig installiert; die mit --without in ./configure --help beginnenden werden standardmäßig installiert.

  • --prefix=PATH: Gibt das Nginx-Installationsverzeichnis an. Standard ist /usr/local/nginx
  • --conf-path=PATH: Legt den Pfad der Konfigurationsdatei nginx.conf fest. Nginx erlaubt das Starten mit unterschiedlichen Konfigurationsdateien über die Option -c auf der Kommandozeile. Standard istprefix/conf/nginx.conf
  • --user=name: Legt den Benutzer der Nginx-Worker-Prozesse fest. Nach der Installation können Sie die user-Direktive in der Konfigurationsdatei nginx.conf jederzeit ändern. Der Standardbenutzername ist nobody. --group=name ist ähnlich.
  • --with-pcre: Legt den Quellcodepfad der PCRE-Bibliothek fest. Wenn sie über yum installiert wurde, verwenden Sie --with-pcre, um die Bibliotheksdateien automatisch zu finden. Bei Verwendung von --with-pcre=PATH müssen Sie den Quellcode der pcre-Bibliothek (Versionen 4.4 – 8.30) von der PCRE-Website herunterladen und entpacken; der Rest wird dem ./configure und make von Nginx überlassen. Perl-reguläre Ausdrücke werden in der location-Direktive und im Modul ngx_http_rewrite_module verwendet.
  • --with-zlib=PATH: Gibt das Verzeichnis zum Entpacken des Quellcodes von zlib an (Versionen 1.1.3 – 1.2.5). zlib wird für das Modul zur Komprimierung bei der Netzwerkübertragung ngx_http_gzip_module benötigt, das standardmäßig aktiviert ist.
  • --with-http_ssl_module: Verwendet das HTTPS-Protokollmodul. Standardmäßig wird dieses Modul nicht gebaut. Voraussetzung ist, dass openssl und openssl-devel installiert sind.
  • --with-http_stub_status_module: Wird verwendet, um den aktuellen Status von Nginx zu überwachen
  • --with-http_realip_module: Dieses Modul ermöglicht es uns, den Wert der Client-IP-Adresse in den Headern der Client-Anfrage (wie X-Real-IP oder X-Forwarded-For) zu ändern. Die Bedeutung besteht darin, dass es Backend-Servern ermöglicht, die ursprüngliche Client-IP-Adresse aufzuzeichnen.
  • --add-module=PATH: Fügt externe Module von Drittanbietern hinzu, wie nginx-sticky-module-ng oder Cache-Module. Jedes Mal, wenn ein neues Modul hinzugefügt wird, ist eine Neukompilierung erforderlich (Tengine kann neue Module ohne Neukompilierung hinzufügen).

Hier ist ein weiteres Kompilierungsschema:

./configure /
> --prefix=/usr /
> --sbin-path=/usr/sbin/nginx /
> --conf-path=/etc/nginx/nginx.conf /
> --error-log-path=/var/log/nginx/error.log /
> --http-log-path=/var/log/nginx/access.log /
> --pid-path=/var/run/nginx/nginx.pid  /
> --lock-path=/var/lock/nginx.lock /   
> --user=nginx /
> --group=nginx /
> --with-http_ssl_module /
> --with-http_stub_status_module /
> --with-http_gzip_static_module /
> --http-client-body-temp-path=/var/tmp/nginx/client/ /
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ /
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ /
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi /
> --with-pcre=../pcre-7.8
> --with-zlib=../zlib-1.2.3

1.3 Nginx starten und stoppen

## 检查配置文件是否正确
# /usr/local/nginx-1.6/sbin/nginx -t 
# ./sbin/nginx -V     # 可以看到编译选项
## 启动、关闭
# ./sbin/nginx        # 默认配置文件 conf/nginx.conf,-c 指定
# ./sbin/nginx -s stop
oder  pkill nginx
## 重启,不会改变启动时指定的配置文件
# ./sbin/nginx -s reload
oder  kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`

Natürlich können Sie Nginx auch als Systemdienst verwalten. Laden Sie nginx nach /etc/init.d/ herunter, ändern Sie die darin enthaltenen Pfade und erteilen Sie ihm dann Ausführungsberechtigungen.

# service nginx {start|stop|status|restart|reload|configtest}

1.4 Installation über yum

Die Installation des RPM-Pakets über yum ist viel einfacher als das Kompilieren und Installieren. Viele Module werden standardmäßig installiert, aber der Nachteil besteht darin, dass es später keine Möglichkeit gibt, Drittanbieter-Module zu installieren.

# vi /etc/yum.repo.d/nginx.repo 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0 
enabled=1

Der Rest wird mit yum install nginx erledigt. Man kann auch yum install nginx-1.6.3 verwenden, um eine bestimmte Version zu installieren (vorausgesetzt, man sieht die entsprechende Version in den Paketen; standardmäßig ist die neueste stabile Version).

2. nginx.conf-Konfigurationsdatei

Die Nginx-Konfigurationsdatei ist hauptsächlich in vier Teile unterteilt: main (globale Einstellungen), server (Host-Einstellungen), upstream (Upstream-Server-Einstellungen, hauptsächlich im Zusammenhang mit Reverse-Proxy- und Load-Balancing-Konfigurationen) und location (Einstellungen, nachdem eine URL mit einem bestimmten location übereinstimmt). Jeder Teil enthält mehrere Direktiven. Direktiven, die im main-Teil festgelegt werden, wirken sich auf die Einstellungen aller anderen Teile aus; Direktiven im server-Teil werden hauptsächlich verwendet, um Domainnamen, IPs und Ports virtueller Hosts anzugeben; Direktiven in upstream werden verwendet, um eine Reihe von Backend-Servern festzulegen und Reverse-Proxy und Load-Balancing der Backend-Server zu konfigurieren; der location-Teil wird verwendet, um Webseitenpositionen abzugleichen (zum Beispiel das Stammverzeichnis "/", "/images" usw.). Die Beziehung zwischen ihnen ist: server erbt von main, location erbt von server; upstream erbt weder Direktiven noch wird davon geerbt. Es hat seine eigenen speziellen Direktiven und muss nicht an anderer Stelle angewendet werden.

Mehrere derzeit von Nginx unterstützte Direktivenkontexte:

2.1 Allgemein

Die folgende nginx.conf ist ein einfaches Beispiel dafür, dass Nginx am Frontend als Reverse-Proxy-Server fungiert, statische Dateien wie js und png verarbeitet und dynamische Anfragen wie jsp an einen anderen Server, Tomcat, weiterleitet:

user  www www;
worker_processes  2;
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    use epoll;
    worker_connections  2048;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    # tcp_nopush     on;
    keepalive_timeout  65;
  # gzip压缩功能设置
    gzip on;
    gzip_min_length 1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;

  # http_proxy 设置
    client_max_body_size   10m;
    client_body_buffer_size   128k;
    proxy_connect_timeout   75;
    proxy_send_timeout   75;
    proxy_read_timeout   75;
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;
  # 设定负载均衡后台服务器列表 
    upstream  backend  { 
              #ip_hash; 
              server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  
              server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  
    }
  # 很重要的虚拟主机配置
    server {
        listen       80;
        server_name  itoatest.example.com;
        root   /apps/oaapp;
        charset utf-8;
        access_log  logs/host.access.log  main;
        #对 / 所有做负载均衡+反向代理
        location / {
            root   /apps/oaapp;
            index  index.jsp index.html index.htm;
            proxy_pass        http://backend;  
            proxy_redirect off;
            # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;  
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

        }
        #静态文件,nginx自己处理,不去backend请求tomcat
        location  ~* /download/ {  
            root /apps/oa/fs;  

        }
        location ~ .*/.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$   
        {   
            root /apps/oaapp;   
            expires      7d; 
        }
           location /nginx_status {
            stub_status on;
            access_log off;
            allow 192.168.10.0/24;
            deny all;
        }
        location ~ ^/(WEB-INF)/ {   
            deny all;   
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  ## 其它虚拟主机,server 指令开始
}

2.2 Beschreibung gängiger Direktiven

2.2.1 main Globale Konfiguration

Einige Parameter von Nginx zur Laufzeit, die nichts mit bestimmten Geschäftsfunktionen zu tun haben (wie HTTP-Dienst oder E-Mail-Dienst-Proxy), zum Beispiel die Anzahl der Worker-Prozesse, die laufende Identität usw.

  • woker_processes 2
    Im Abschnitt der obersten Ebene der Konfigurationsdatei: die Anzahl der Worker-Prozesse in der Worker-Rolle. Der Master-Prozess empfängt Anfragen und weist sie den Workern zur Verarbeitung zu. Der Einfachheit halber kann dieser Wert auf die Anzahl der CPU-Kerne `grep ^processor /proc/cpuinfo | wc -l` gesetzt werden, was auch dem `auto`-Wert entspricht. Wenn SSL und gzip aktiviert sind, sollte er auf die Anzahl der logischen CPUs oder sogar auf das Doppelte gesetzt werden, was I/O-Operationen reduzieren kann. Wenn der Nginx-Server auch andere Dienste ausführt, sollte eine entsprechende Reduzierung in Betracht gezogen werden.mainAuch im Abschnitt main geschrieben.
  • worker_cpu_affinity
    In Situationen mit hoher Nebenläufigkeit sollte CPU-Affinität festgelegt werden, um den Leistungsverlust zu verringern, der durch die Neuerstellung von Registern und anderen Kontexten aufgrund von Multi-Core-CPU-Umschaltung entsteht. Zum Beispiel: worker_cpu_affinity 0001 0010 0100 1000; (vier Kerne).mainGeschrieben im
  • worker_connections 2048
    Abschnitt. Jeder Worker-Prozess kann gleichzeitig die maximale Anzahl von Verbindungen verarbeiten (initiieren) (einschließlich aller Verbindungen mit Clients oder über Proxy verbundenen Backend-Servern). Wenn Nginx als Reverse-Proxy-Server fungiert, lautet die Berechnungsformel: maximale Verbindungen = worker_processes * worker_connections / 4, sodass die maximale Anzahl an Client-Verbindungen hier 1024 beträgt. Dies kann je nach Situation problemlos auf 8192 erhöht werden, darf jedoch den späteren worker_rlimit_nofile nicht überschreiten. Wenn Nginx als HTTP-Server fungiert, wird die Berechnungsformel durch 2 geteilt.eventsGeschrieben im
  • worker_rlimit_nofile 10240
    Abschnitt. Standardmäßig ist er nicht gesetzt und kann auf das Betriebssystemmaximum von 65535 begrenzt werden.mainGeschrieben im events-Abschnitt. Unter Linux verwendet Nginx standardmäßig das epoll-Event-Modell. Dadurch ist Nginx unter Linux recht effizient. Gleichzeitig verwendet Nginx kqueue, ein hocheffizientes Event-Modell ähnlich wie epoll, auf OpenBSD- oder FreeBSD-Systemen. select wird nur verwendet, wenn das Betriebssystem diese hocheffizienten Modelle nicht unterstützt.
  • use epoll
    2.2.2 HTTP-Server

Einige Konfigurationsparameter im Zusammenhang mit der Bereitstellung von HTTP-Diensten. Zum Beispiel: ob keepalive verwendet werden soll, ob gzip zur Komprimierung verwendet werden soll usw.

Aktiviert den hocheffizienten Dateitransfermodus. Die sendfile-Direktive legt fest, ob Nginx die sendfile-Funktion zum Ausgeben von Dateien aufruft, wodurch Kontextwechsel vom Benutzerraum in den Kernelraum reduziert werden. Für gewöhnliche Anwendungen wird sie auf on gesetzt; für Anwendungen mit hoher Festplatten-I/O-Last wie Downloads kann sie auf off gesetzt werden, um die Verarbeitungsgeschwindigkeit von Festplatten- und Netzwerk-I/O auszugleichen und die Systemlast zu reduzieren.

  • sendfile on
    Aktiviert den effizienten Dateitransfermodus. Die sendfile-Direktive legt fest, ob nginx die sendfile-Funktion zum Ausgeben von Dateien aufruft, wodurch Kontextwechsel vom Benutzerraum in den Kernelraum reduziert werden. Für normale Anwendungen wird sie auf on gesetzt; wenn sie für Anwendungen mit hoher Festplatten-I/O-Last wie Downloads verwendet wird, kann sie auf off gesetzt werden, um die Verarbeitungsgeschwindigkeit von Festplatten- und Netzwerk-I/O auszugleichen und die Systemlast zu reduzieren.
  • keepalive_timeout 65 : Keep-Alive-Timeout in Sekunden. Dieser Parameter ist sehr sensibel und betrifft Browsertypen, Timeout-Einstellungen des Backend-Servers und Betriebssystemeinstellungen; er könnte Gegenstand eines weiteren Artikels sein. Mit Keep-Alive kann bei der Anforderung vieler kleiner Dateien der Overhead für das erneute Aufbauen von Verbindungen reduziert werden. Wenn jedoch ein großer Datei-Upload erfolgt und nicht innerhalb von 65 Sekunden abgeschlossen ist, schlägt er fehl. Wenn der Timeout zu lang eingestellt ist und es viele Benutzer gibt, verbraucht das lange Halten von Verbindungen viele Ressourcen.
  • send_timeout : wird verwendet, um den Timeout für die Antwort an den Client anzugeben. Dieser Timeout ist auf die Zeit zwischen zwei Verbindungsaktivitäten begrenzt. Wenn der Client über diese Zeit hinaus keine Aktivität zeigt, schließt Nginx die Verbindung.
  • client_max_body_size 10m
    Die maximale Bytegröße einer einzelnen Datei, die für Client-Anfragen zulässig ist. Wenn große Datei-Uploads vorhanden sind, legen Sie deren Limit fest.
  • client_body_buffer_size 128k
    Die maximale Anzahl von Bytes zum Puffern von Client-Anfragen im Proxy-Puffer.
Modul http_proxy:

Dieses Modul implementiert die Funktionalität von Nginx als Reverse-Proxy-Server, einschließlich Caching (siehe auchArtikel)

  • proxy_connect_timeout 60
    Timeout für Nginx beim Verbinden mit Backend-Servern (Proxy-Verbindungs-Timeout)
  • proxy_read_timeout 60
    Nach einer erfolgreichen Verbindung das Timeout zwischen zwei erfolgreichen Antwortvorgängen mit dem Backend-Server (Proxy-Empfangs-Timeout)
  • proxy_buffer_size 4k
    Legt die Puffergröße für den Proxyserver (nginx) fest, um BenutzerheadInformationen vom Backend-Realserver zu lesen und zu speichern. Der Standardwert ist derselbe wie die proxy_buffers-Größe; tatsächlich können Sie diesen Direktivenwert etwas kleiner einstellen.
  • proxy_buffers 4 32k
    proxy_buffers-Puffer: nginx speichert vom Backend-Realserver für eine einzelne VerbindungAntwortenzwischen. Wenn die durchschnittliche Webseite unter 32k liegt, konfigurieren Sie es so
  • proxy_busy_buffers_size 64k
    Puffergröße bei hoher Last (proxy_buffers*2)
  • proxy_max_temp_file_size
    Wenn proxy_buffers den Antwortinhalt vom Backend-Server nicht aufnehmen kann, wird ein Teil davon in einer temporären Datei auf der Festplatte gespeichert. Dieser Wert legt die maximale Größe der temporären Datei fest; der Standardwert ist 1024M. Er hat nichts mit proxy_cache zu tun. Wenn der Inhalt größer als dieser Wert ist, wird er vom Upstream-Server zurück übertragen. Wenn er auf 0 gesetzt wird, wird er deaktiviert.
  • proxy_temp_file_write_size 64k
    Wenn zwischengespeicherte Antworten des proxied Servers in temporäre Dateien geschrieben werden, begrenzt diese Option die Größe jedes Schreibvorgangs in die temporäre Datei. proxy_temp_path (kann zur Kompilierungszeit festgelegt werden) gibt das Verzeichnis an, in das geschrieben wird.

proxy_pass und proxy_redirect, siehe Abschnitt location.

Modul http_gzip:
  • gzip on : aktiviert gzip-komprimierte Ausgabe, um die Netzwerkübertragung zu reduzieren.
    • gzip_min_length 1k : legt die minimale Seiten-Bytegröße fest, die für die Komprimierung zulässig ist. Die Seiten-Bytegröße wird aus dem content-length im Header ermittelt. Der Standardwert ist 20. Es wird empfohlen, sie auf eine Bytegröße größer als 1k festzulegen; unter 1k kann die Datei nach der Komprimierung größer werden.
    • gzip_buffers 4 16k : legt fest, wie viele Cache-Einheiten das System bezieht, um den gzip-komprimierten Ergebnisdatenstrom zu speichern. "4 16k" bedeutet, 16k als Einheit zu verwenden und Speicher in 16k-Einheiten für die vierfache Größe der Originaldaten zuzuweisen.
    • gzip_http_version 1.0 : wird verwendet, um die HTTP-Protokollversion zu identifizieren. Frühe Browser unterstützen keine gzip-Komprimierung, und Benutzer würden unlesbaren Text sehen. Daher wurde diese Option hinzugefügt, um frühere Versionen zu unterstützen. Wenn Sie Nginx als Reverse-Proxy verwenden und auch gzip-Komprimierung aktivieren möchten, setzen Sie sie bitte auf 1.0, da die Backend-Kommunikation http/1.0 ist.
    • gzip_comp_level 6 : gzip-Komprimierungsgrad. 1 hat den kleinsten Komprimierungsgrad und die schnellste Verarbeitungsgeschwindigkeit; 9 hat den größten Komprimierungsgrad, aber die langsamste Verarbeitungsgeschwindigkeit (schnellere Übertragung, aber CPU-intensiver).
    • gzip_types : MIME-Typen für die Komprimierung abgleichen. Ob angegeben oder nicht, der Typ "text/html" wird immer komprimiert.
    • gzip_proxied any : aktiviert, wenn Nginx als Reverse-Proxy fungiert. Es entscheidet, ob die Komprimierung der vom Backend-Server zurückgegebenen Ergebnisse aktiviert oder deaktiviert wird. Voraussetzung für die Übereinstimmung ist, dass der Backend-Server einen Header zurückgeben muss, der "Via" enthält.
    • gzip_vary on : bezieht sich auf HTTP-Header. Es fügt einen Antwort-Header "Vary: Accept-Encoding" hinzu, der es Front-End-Cache-Servern ermöglicht, gzip-komprimierte Seiten zwischenzuspeichern. Verwenden Sie beispielsweise Squid, um von Nginx komprimierte Daten zwischenzuspeichern.

2.2.3 Virtuelle Server-Hosts

Der http-Dienst unterstützt mehrere virtuelle Hosts. Jeder virtuelle Host hat einen entsprechenden Server-Konfigurationsblock, der die Konfiguration für diesen virtuellen Host enthält. Bei der Bereitstellung eines Mail-Service-Proxys können auch mehrere Server-Blöcke erstellt werden. Jeder Server wird durch seine Listen-Adresse oder seinen Port unterschieden.

  • listen
    Listening-Port, Standard 80. Ports unter 1024 müssen als root gestartet werden. Er kann in Formen wie listen *:80, listen 127.0.0.1:80 usw. angegeben werden.
  • server_name
    Servername, wie localhost, www.example.com. Er kann mit regulären Ausdrücken abgeglichen werden.
Modul http_stream

Dieses Modul implementiert Lastverteilung von Client-IPs auf Backend-Server durch einen einfachen Scheduling-Algorithmus. Auf "upstream" folgt der Name des Load Balancers, und Backend-Realserver werden in {} als host:port options; organisiert. Wenn nur ein Backend über einen Proxy weitergeleitet wird, kann es auch direkt in proxy_pass geschrieben werden.

2.2.4 location

Im http-Dienst eine Reihe von Konfigurationsanweisungen, die bestimmten spezifischen URLs entsprechen.

  • root /var/www/html
    Definiert den Standardpfad des Website-Stammverzeichnisses für den Server. Wenn die Location-URL mit einem Unterverzeichnis oder einer Datei übereinstimmt, hat root kaum Auswirkungen. Er wird normalerweise in der server-Direktive oder unter "/" platziert.
  • index index.jsp index.html index.htm
    Definiert den Standarddateinamen, auf den unter dem Pfad zugegriffen wird. Er wird normalerweise zusammen mit root platziert.
  • proxy_pass http:/backend
    Leitet Anfragen an die durch backend definierte Serverliste weiter, d. h. Reverse-Proxy, entsprechend dem Upstream-Load-Balancer. Es kann auch proxy_pass http://ip:port sein.
  • proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    Setzen Sie diese vier vorerst so. Wenn Sie tiefer eintauchen, beinhaltet jede sehr komplexe Inhalte, die in einem anderen Artikel erklärt werden.

Bezüglich der Syntax der location-Matching-Regeln lässt sich sagen, dass sie besonders entscheidend und grundlegend ist. Siehe den ArtikelZusammenfassung der Nginx-location-Konfiguration und Rewrite-Regel-Syntax;

2.3 Sonstiges

2.3.1 Zugriffskontrolle allow/deny

Das Zugriffskontrollmodul von Nginx ist standardmäßig installiert, und seine Syntax ist ebenfalls sehr einfach. Es kann mehrere allow- und deny-Direktiven geben, die den Zugriff von einer bestimmten IP oder einem IP-Bereich erlauben oder blockieren. Sobald eine Regel in der Reihenfolge übereinstimmt, wird der Abgleich beendet. Zum Beispiel:

location /nginx-status {
  stub_status on;
  access_log off;
#  auth_basic   "NginxStatus";
#  auth_basic_user_file   /usr/local/nginx-1.6/htpasswd;
  allow 192.168.10.100;
  allow 172.29.73.0/24;
  deny all;
}

Wir verwenden auch häufig htpasswd aus dem httpd-devel-Tool, um ein Anmeldepasswort für den zugegriffenen Pfad festzulegen:

# htpasswd -c htpasswd admin
New passwd:
Re-type new password:
Adding password for user admin
# htpasswd htpasswd admin    //修改admin密码
# htpasswd htpasswd sean    //多添加一个认证用户

Dadurch wird standardmäßig eine mit CRYPT verschlüsselte Passwortdatei erzeugt. Entfernen Sie die Kommentarzeichen bei den beiden obigen Zeilen von nginx-status, und starten Sie Nginx neu, damit dies wirksam wird.

2.3.2 Verzeichnisauflistung autoindex

Standardmäßig erlaubt Nginx nicht das Auflisten des gesamten Verzeichnisses. Wenn Sie diese Funktion benötigen, öffnen Sie die Datei nginx.conf und fügen Sie "autoindex on;" im Abschnitt location, server oder http hinzu. Am besten fügen Sie auch die anderen beiden Parameter hinzu:

  • autoindex_exact_size off; Der Standardwert ist on, wodurch die genaue Dateigröße in Bytes angezeigt wird. Nach der Änderung auf off wird die ungefähre Dateigröße in kB, MB oder GB angezeigt.
  • autoindex_localtime on;
    Der Standardwert ist off, wodurch die Dateizeit als GMT-Zeit angezeigt wird. Nach der Änderung auf on ist die angezeigte Dateizeit die Serverzeit der Datei.
location /images {
  root   /var/www/nginx-default/images;
  autoindex on;
  autoindex_exact_size off;
  autoindex_localtime on;
}

Referenzen