Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Strukturmethode der Nginx-Konfigurationsdatei

Strukturmethode der Nginx-Konfigurationsdatei

王林
王林nach vorne
2023-05-13 08:34:161461Durchsuche

nginx wurde von lgor sysoev für rambler.ru, die am zweithäufigsten besuchte Website in Russland, entworfen und entwickelt. Seit seiner Veröffentlichung im Jahr 2004 ist es mit der Leistungsfähigkeit von Open Source nahezu ausgereift und perfekt geworden.

nginx ist reich an Funktionen und kann als http-Server, Reverse-Proxy-Server und Mail-Server verwendet werden. Unterstützt FastCGI, SSL, Virtual Host, URL Rewrite, GZIP und andere Funktionen. Und unterstützt viele Modulerweiterungen von Drittanbietern. Mit Stabilität, Funktionsumfang, Beispielkonfigurationsdateien und geringem Systemressourcenverbrauch liegt nginx mit einer Nutzungsrate von 12,18 % der weltweit aktiven Websites, etwa 22,2 Millionen Websites, an der Spitze.

Nginx-Gemeinsame Funktionen

1. HTTP-Proxy, Reverse-Proxy
: Als eine der am häufigsten verwendeten Funktionen von Webservern, insbesondere Reverse-Proxy. Hier zeige ich Ihnen zwei Bilder, um den Positivwirkstoff und den Reaktivwirkstoff zu erklären. Sie können die Informationen für die spezifischen Details lesen.

Strukturmethode der Nginx-Konfigurationsdateinginx bietet eine stabile Leistung, wenn es als Reverse-Proxy verwendet wird, und kann Weiterleitungsfunktionen mit flexibler Konfiguration bereitstellen. Nginx kann verschiedene Weiterleitungsstrategien anwenden, die auf unterschiedlichen regulären Übereinstimmungen basieren, z. B. das Gehen zum Dateiserver am Ende der Bilddatei und das Gehen zum Webserver für dynamische Seiten, sofern Sie kein Problem damit haben, reguläre Regeln zu schreiben und über entsprechende Regeln zu verfügen Mit Serverlösungen können Sie spielen, was Sie wollen. Und Nginx führt einen Fehlerseitensprung, eine Ausnahmebeurteilung usw. für die zurückgegebenen Ergebnisse durch. Wenn der verteilte Server abnormal ist, kann er die Anfrage an einen anderen Server weiterleiten und den abnormalen Server dann automatisch entfernen.

2. Lastausgleich

nginx bietet zwei Arten von Lastausgleichsstrategien: integrierte Strategie und erweiterte Strategie. Die integrierten Strategien sind Polling, Weighted Polling und IP-Hash. Die Erweiterungsstrategie ist ebenso einfallsreich wie unvorstellbar. Es gibt nichts, was sie nicht kann. Sie können auf alle Lastausgleichsalgorithmen zurückgreifen, um sie einzeln zu finden und umzusetzen.

Die obigen drei Bilder verdeutlichen die Implementierung dieser drei Lastausgleichsalgorithmen

Strukturmethode der Nginx-KonfigurationsdateiDer IP-Hash-Algorithmus führt eine Hash-Operation für die vom Client angeforderte IP durch und verteilt dann die Anforderung für dieselbe Client-IP an denselben Client basierend auf dem Hash-Ergebnis. Die Verarbeitung auf einem Server kann das Problem lösen, dass Sitzungen nicht gemeinsam genutzt werden.

Strukturmethode der Nginx-Konfigurationsdatei

3. Web-Caching

nginx kann mit flexibler Konfiguration unterschiedliche Cache-Verarbeitungen für verschiedene Dateien durchführen und unterstützt fastcgi_cache, das hauptsächlich zum Zwischenspeichern dynamischer Fastcgi-Programme verwendet wird. In Zusammenarbeit mit dem Drittanbieter ngx_cache_purge kann der angegebene URL-Cache-Inhalt zur Verwaltung hinzugefügt und gelöscht werden. 4. Nginx-bezogene Adressen Server, die Standardkonfiguration wird auch hier gespeichert.

Im Kommentarsymbol von nginx.conf #

Die Struktur der Nginx-Datei können Schüler, die gerade erst anfangen, einen zweiten Blick darauf werfen.
Standardkonfiguration

nginx-Dateistruktur

...    #全局块

events {   #events块
 ...
}

http  #http块
{
 ... #http全局块
 server  #server块
 { 
  ...  #server全局块
  location [pattern] #location块
  {
   ...
  }
  location [pattern] 
  {
   ...
  }
 }
 server
 {
  ...
 }
 ...  #http全局块
}
1. Konfigurieren Sie Anweisungen, die sich global auf Nginx auswirken. Im Allgemeinen gibt es eine Benutzergruppe zum Ausführen des Nginx-Servers, des Nginx-Prozess-PID-Speicherpfads, des Protokollspeicherpfads, der Einführung der Konfigurationsdatei, der Anzahl der Arbeitsprozesse, die generiert werden dürfen usw.

2. Ereignisblock: Die Konfiguration betrifft den Nginx-Server oder die Netzwerkverbindung mit dem Benutzer. Es gibt die maximale Anzahl von Verbindungen pro Prozess, welches ereignisgesteuerte Modell zur Verarbeitung von Verbindungsanfragen ausgewählt werden soll, ob die gleichzeitige Annahme mehrerer Netzwerkverbindungen zugelassen werden soll, ob die Serialisierung mehrerer Netzwerkverbindungen aktiviert werden soll usw.

3. HTTP-Block: Sie können mehrere Server verschachteln, Proxys, Caches, Protokolldefinitionen und andere Funktionen sowie Modulkonfigurationen von Drittanbietern konfigurieren. Wie Dateieinführung, Mime-Typ-Definition, Protokollanpassung, ob sendfile zum Übertragen von Dateien verwendet werden soll, Verbindungszeitlimit, Anzahl einzelner Verbindungsanforderungen usw.

4. Serverblock: Konfigurieren Sie die relevanten Parameter des virtuellen Hosts. Es können mehrere Server in einem http vorhanden sein.

5. Standortblock: Konfigurieren Sie die Weiterleitung von Anfragen und die Verarbeitung verschiedener Seiten.


Das Folgende ist eine Konfigurationsdatei für jedermann zum Verständnis, die auch auf einer Testmaschine installiert ist, die ich gebaut habe, um Ihnen ein Beispiel zu geben.

########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
 accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
 multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
 #use epoll;  #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
 worker_connections 1024; #最大连接数,默认为512
}
http {
 include  mime.types; #文件扩展名与文件类型映射表
 default_type application/octet-stream; #默认文件类型,默认为text/plain
 #access_log off; #取消服务日志 
 log_format myformat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
 access_log log/access.log myformat; #combined为日志格式的默认值
 sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
 sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
 keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。

 upstream mysvr { 
  server 127.0.0.1:7878;
  server 192.168.10.121:3333 backup; #热备
 }
 error_page 404 https://www.baidu.com; #错误页
 server {
  keepalive_requests 120; #单连接请求上限次数。
  listen  4545; #监听端口
  server_name 127.0.0.1; #监听地址  
  location ~*^.+$ {  #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
   #root path; #根目录
   #index vv.txt; #设置默认页
   proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
   deny 127.0.0.1; #拒绝的ip
   allow 172.18.5.54; #允许的ip   
  } 
 }
}

Das Obige ist die Grundkonfiguration von nginx. Sie müssen auf die folgenden Punkte achten: 1. $remote_addr und $http_x_forwarded_for werden verwendet, um die IP-Adresse des Clients aufzuzeichnen den Client-Benutzernamen aufzeichnen; 3.$time_local: wird verwendet, um die Zugriffszeit und Zeitzone aufzuzeichnen; 4.$request: wird verwendet, um die angeforderte URL und das http-Protokoll aufzuzeichnen; 5.$status: wird verwendet, um den Anforderungsstatus aufzuzeichnen; Erfolg ist 200, 6. $body_bytes_s ent: Zeichnet die Größe des Hauptinhalts der an den Client gesendeten Datei auf. 7. $http_referer: Wird zum Aufzeichnen des Seitenlinks verwendet, von dem aus zugegriffen wird. 8. $http_user_agent: Zeichnet relevante Informationen des Clients auf Browser;

2. Phänomen der donnernden Herde: Wenn eine Netzwerkverbindung eintrifft, werden mehrere ruhende Prozesse von Kollegen geweckt, aber nur ein Prozess kann die Verbindung herstellen, was sich auf die Systemleistung auswirkt.

3、每个指令必须有分号结束。

下面看下其他网友的补充:

在此记录下nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络.

#运行用户
user www-data;  
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;

#全局错误日志及pid文件
error_log /var/log/nginx/error.log;
pid    /var/run/nginx.pid;

#工作模式及连接数上限
events {
  use  epoll;       #epoll是多路复用io(i/o multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
  worker_connections 1024;#单个后台worker process进程的最大并发链接数
  # multi_accept on; 
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
   #设定mime类型,类型由mime.type文件定义
  include    /etc/nginx/mime.types;
  default_type application/octet-stream;
  #设定日志格式
  access_log  /var/log/nginx/access.log;

  #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
  #必须设为 on,如果用来进行下载等应用磁盘io重负载应用,可设置为 off,以平衡磁盘与网络i/o处理速度,降低系统的uptime.
  sendfile    on;
  #tcp_nopush   on;

  #连接超时时间
  #keepalive_timeout 0;
  keepalive_timeout 65;
  tcp_nodelay    on;
  
  #开启gzip压缩
  gzip on;
  gzip_disable "msie [1-6]\.(?!.*sv1)";

  #设定请求缓冲
  client_header_buffer_size  1k;
  large_client_header_buffers 4 4k;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;

  #设定负载均衡的服务器列表
   upstream mysvr {
  #weigth参数表示权值,权值越高被分配到的几率越大
  #本机上的squid开启3128端口
  server 192.168.8.1:3128 weight=5;
  server 192.168.8.2:80 weight=1;
  server 192.168.8.3:80 weight=6;
  }


  server {
  #侦听80端口
    listen    80;
    #定义使用www.xx.com访问
    server_name www.xx.com;

    #设定本虚拟主机的访问日志
    access_log logs/www.xx.com.access.log main;

  #默认请求
  location / {
     root  /root;   #定义服务器的默认网站根目录位置
     index index.php index.html index.htm;  #定义首页索引文件的名称

     fastcgi_pass www.xx.com;
     fastcgi_param script_filename $document_root/$fastcgi_script_name; 
     include /etc/nginx/fastcgi_params;
    }

  # 定义错误提示页面
  error_page  500 502 503 504 /50x.html; 
    location = /50x.html {
    root  /root;
  }

  #静态文件,nginx自己处理
  location ~ ^/(images|javascript|js|css|flash|media|static)/ {
    root /var/www/virtual/htdocs;
    #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
    expires 30d;
  }
  #php 脚本请求全部转发到 fastcgi处理. 使用fastcgi默认配置.
  location ~ \.php$ {
    root /root;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param script_filename /home/www/www$fastcgi_script_name;
    include fastcgi_params;
  }
  #设定查看nginx状态的地址
  location /nginxstatus {
    stub_status      on;
    access_log       on;
    auth_basic       "nginxstatus";
    auth_basic_user_file conf/htpasswd;
  }
  #禁止访问 .htxxx 文件
  location ~ /\.ht {
    deny all;
  }
   
   }
}

以上是一些基本的配置,使用nginx最大的好处就是负载均衡

如果要使用负载均衡的话,可以修改配置http节点如下:

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
   #设定mime类型,类型由mime.type文件定义
  include    /etc/nginx/mime.types;
  default_type application/octet-stream;
  #设定日志格式
  access_log  /var/log/nginx/access.log;

  #省略上文有的一些配置节点

  #。。。。。。。。。。

  #设定负载均衡的服务器列表
   upstream mysvr {
  #weigth参数表示权值,权值越高被分配到的几率越大
  server 192.168.8.1x:3128 weight=5;#本机上的squid开启3128端口
  server 192.168.8.2x:80 weight=1;
  server 192.168.8.3x:80 weight=6;
  }

  upstream mysvr2 {
  #weigth参数表示权值,权值越高被分配到的几率越大

  server 192.168.8.x:80 weight=1;
  server 192.168.8.x:80 weight=6;
  }

  #第一个虚拟服务器
  server {
  #侦听192.168.8.x的80端口
    listen    80;
    server_name 192.168.8.x;

   #对aspx后缀的进行负载均衡请求
  location ~ .*\.aspx$ {

     root  /root;   #定义服务器的默认网站根目录位置
     index index.php index.html index.htm;  #定义首页索引文件的名称

     proxy_pass http://mysvr ;#请求转向mysvr 定义的服务器列表

     #以下是一些反向代理的配置可删除.

     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;
     client_max_body_size 10m;  #允许客户端请求的最大单文件字节数
     client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
     proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
     proxy_send_timeout 90;    #后端服务器数据回传时间(代理发送超时)
     proxy_read_timeout 90;     #连接成功后,后端服务器响应时间(代理接收超时)
     proxy_buffer_size 4k;       #设置代理服务器(nginx)保存用户头信息的缓冲区大小
     proxy_buffers 4 32k;        #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
     proxy_busy_buffers_size 64k;  #高负荷下缓冲大小(proxy_buffers*2)
     proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

    }

   }
}

Das obige ist der detaillierte Inhalt vonStrukturmethode der Nginx-Konfigurationsdatei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen