소개
대규모 웹 프로젝트를 개발할 때, 우리의 웹이 서버의 IIS에 게시되어 있을 때, 많은 요청이 들어올 때 이 서비스는 IIS는 쉽게 컴퓨터 충돌을 일으킬 수 있습니다. 그래서 우리는 서비스를 여러 대의 컴퓨터에 배치하는 것이 어떨까요? 이러한 방식으로 이전 요청이 192.168.**.252:8070으로 이동하면 다음 요청이 192.168.**.253:8071로 이동하도록 할 수 있어 서버에 대한 부담을 줄일 수 있습니다.
이제 문제가 발생합니다. 사용자가 보낸 Request를 어떻게 다른 서버로 보낼 수 있나요? 이때 Nginx가 필요합니다.
이제 Nginx에 구현된 .net 웹 서비스를 소개하겠습니다.
Nginx는 압축이 풀린 패키지입니다. Nginx 서버에서 압축을 풀고 구성 파일을 수정하기만 하면 Nginx가 설치됩니다.
Nginx 설치 및 구성
C 드라이브의 루트 디렉터리에 Nginx를 추출합니다:
Nginx에서 파일 디렉터리를 볼 수 있습니다. 여기에서 conf 폴더 아래의 nginx.conf 파일을 수정해야 합니다.
대략적인 설명:
파일 모양은 다음과 같습니다.
<span style="font-size:18px;">#user nobody; worker_processes 1;#工作进程的个数,可以配置多个 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024;#单个进程最大连接数(最大连接数=连接数*进程数) } #设定http服务器,利用它的反向代理功能提供负载均衡支持 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;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #长连接超时时间,单位是秒 gzip on;#启用Gizp压缩 #服务器的集群 upstream netitcast.com { #服务器集群名字 server 127.0.0.1:8030 weight=1; #服务器配置 weight是权重的意思,权重越大,分配的概率越大。 server 127.0.0.1:8040 weight=1; } #当前的Nginx的配置 server { listen 8090;#监听80端口,可以改成其他端口 server_name localhost;############## 当前服务的域名 #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} location / { proxy_pass http://netitcast.com; proxy_redirect default; } #location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$ #{ # expires 30d; # root /nginx-1.4.7;#root: # break; #} #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; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} } </span>
<span style="font-size:18px;"> #服务器的集群 upstream netitcast.com { #服务器集群名字 server 127.0.0.1:8030 weight=1; #服务器配置 weight是权重的意思,权重越大,分配的概率越大。 server 127.0.0.1:8040 weight=1; } #当前的Nginx的配置 server { listen 8090;#监听80端口,可以改成其他端口 server_name localhost;############## 当前服务的域名 #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} location / { proxy_pass http://netitcast.com; proxy_redirect default; } </span>
서버 IP: 포트
해당 서버의 IP와 포트에 프로젝트를 게시할 예정이며, 여기에 IP와 포트 번호를 적으면 됩니다. 다음 가중치는 가중치입니다. 즉, 두 서버가 모두 1인 경우 요청은 1:1입니다. 첫 번째 요청은 포트 8030에서 액세스되고 두 번째 요청은 포트 8040에서 액세스됩니다.
server{listen 8090}은 nginx의 수신 포트 번호입니다. 즉, 서버 클러스터의 서비스에 액세스하려면 Nginx 서버의 IP 및 포트 번호만 액세스하면 됩니다. .
Nginx의 원리:
Nginx가 구성되었습니다. 다음 단계 이 블로그 게시물에서는 웹 서비스를 IIS에 게시했습니다.
참고 블로그: http://blog.csdn.net/zhanghan18333611647/article/details/50282951
위 내용은 Nginx IIS 웹 프런트엔드(Spring MVC) - 로드 밸런싱(1) 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.