Heim  >  Artikel  >  Backend-Entwicklung  >  Eintrittsfall für den Nginx-Lastausgleichsserver

Eintrittsfall für den Nginx-Lastausgleichsserver

不言
不言Original
2018-04-04 15:00:171337Durchsuche


Ich hatte kürzlich Zeit, Nginx zu studieren und habe einen einfachen Einführungsfall erstellt.

Einführung:

Nginx (Engine x) ist ein leichter Web- Server und Reverse-Proxy-Server und E-Mail (IMAP/POP3) Proxyserver.

Der normale Client-Zugriffsservermodus ist der direkte Zugriff. Mit dem nginx-Server können wir dieselbe Anwendung auf verschiedenen Servern bereitstellen. Der Zugriffsmodus ist wie folgt Verbessert die Parallelitätsfähigkeiten erheblich, verringert den Serverdruck und verbessert die Leistung.

Normaler Zugriffsmodus:



NginxZugriffsmodus:


Vorteile:

Als Web- Server: Im Vergleich zu Apache, Nginx verbrauchen weniger Ressourcen, unterstützen mehr gleichzeitige Verbindungen und weisen eine höhere Effizienz auf, was Nginx ausmacht ist besonders bei Webhosting-Anbietern beliebt. Kann Antworten von bis zu 50.000 gleichzeitigen Verbindungen unterstützen, dank Nginx für die Auswahl von epoll und kqueue für uns Als Entwicklungsmodell.

Als Lastausgleichsserver: Nginx beides intern Unterstützt direkt Rails und PHP und kann auch die externe Verwendung als HTTP Proxy-Server Dienste ausführen. Nginx ist in C geschrieben, unabhängig vom Systemressourcenaufwand oder CPU -Nutzungseffizienz ist viel besser als Perlbal .

Als Mail-Proxy-Server: Nginx ist auch ein sehr ausgezeichneter Mail-Proxy-Server (einer der frühesten Zwecke bei der Entwicklung dieses Produkts war auch als Mail-Proxy-Server (Mail-Proxy-Server), Last.fm beschreibt ein gelungenes und wunderbares Erlebnis.

Nginx

Die Installation ist sehr einfach und die Konfigurationsdatei ist sehr prägnant (sie unterstützt auch die Perl-Syntax). ), BugsSehr wenige Server: Nginx Starten ist besonders einfach und fast möglich7*24 Läuft ohne Unterbrechung, kein Neustart erforderlich, auch wenn es mehrere Monate läuft. Sie können die Softwareversion auch ohne Serviceunterbrechung aktualisieren.

Installation:

verfügt über Linux und Windows. Grundsätzlich müssen Sie die entsprechenden Versionen installieren. Ich nehme Windows als Beispiel:

Laden Sie das Installationspaket herunterhttp://nginx.org/en/download. html

Entpacken Sie, klicken Sie auf nginx.exe , um den Dienst auszuführen, geben Sie localhost in den Browser ein (Standardüberwachung 127.0.0.1:80) Wenn Sie die folgende Seite aufrufen, wird angezeigt, dass der nginx-Server erfolgreich gestartet wurde.


Demo:

Ich habe selbst eins gebautspringboot ist ein einfaches Projekt, das auf verschiedenen Ports bereitgestellt wird (kann auf verschiedenen Servern bereitgestellt werden). Um das Testen zu erleichtern, habe ich eine einfache Unterscheidung zwischen den Ausgabeinhalten getroffen:


Konfigurationsdetails:

Hinweis: conf/nginx.conf ist die Standardkonfigurationsdatei von nginx . Sie können auch nginx -c verwenden, um Ihre Konfigurationsdatei anzugeben

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

#全局错误日志
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#PID文件,记录当前启动的nginx的进程ID
#pid        logs/nginx.pid;

#工作模式及连接数上限
events {
    worker_connections  1024;
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    #设定mime类型(邮件支持类型),类型由mime.types文件定义
    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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    keepalive_timeout  65;

    #gzip压缩开关
    #gzip  on;
	
    #设定负载均衡的服务器列表(或者一个反向代理服务器,一个的话不需要分配权重)
    upstream hello_server {
        #weigth参数表示权值,权值越高被分配到的几率越大
        server 127.0.0.1:8888   weight=1;
        server 127.0.0.1:8899   weight=3;
    }

    server {
        #监听80端口,80端口是知名端口号,用于HTTP协议
	listen       80;
	#定义使用localhost访问
        server_name  localhost;

        #编码格式
	charset utf-8;

        #access_log  logs/host.access.log  main;
		
	#反向代理的路径,location 后面设置映射的路径
	#对所有请求进行负载均衡请求(和upstream绑定)
        location / {
            root        /root;                 #定义服务器的默认网站根目录位置
            index       index.html index.htm;  #定义首页索引文件的名称
            proxy_pass  http://hello_server;   #请求转向hello_server 定义的服务器列表

            #以下是一些反向代理的配置(可选择性配置)
            #proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header X-Forwarded-For $remote_addr;
            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服务器传
            
            client_max_body_size 10m;          #允许客户端请求的最大单文件字节数
            client_body_buffer_size 128k;      #缓冲区代理缓冲用户端请求的最大字节数
        }

}

Nach der Konfiguration starten Sie nginx neu Server, Zugriff auf localhost:

Neustartbefehl: nginx -s reload

Sie greifen immer noch auf den nginx(localhost)-Server zu, aber Sie greifen tatsächlich auf den bereitgestellten Server zuSpringbootProjekt(localhost:8899). Wenn Sie noch ein paar Mal aktualisieren, sehen Sie das Bild unten, das anzeigt, dass auf die auf beiden Ports bereitgestellten Dienste zugegriffen wurde.


Hinweis: Die von den beiden Diensten zugewiesenen Gewichtswerte sind unterschiedlich, also Hallo Welt b erscheint !!!(Tatsächlich auf localhost:8899 zugreifen) ist wahrscheinlicher, und Hallo Welt a!!!(Der tatsächliche Zugriff auf localhost:8888) ist weniger wahrscheinlich. Sie können den Berechtigungswert selbst ändern und ihn noch ein paar Mal testen!

Zusammenfassung:

NginxAllgemeine Befehle:



Verwandte Empfehlungen:

Verwenden Sie Nginx, um domänenübergreifende Ajax-Anfragen zu vermeiden

Der Nginx-Reverse-Proxy-Mechanismus löst Front-End-Cross- Domainprobleme


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

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