vlambda博客
学习文章列表

从零开始学Nginx(二)——反向代理+负载均衡

上面两个名词看起来很难,其实只要几行配置就能搞定。

今天我们一起来double kill。


/usr/local/nginx/conf/nginx.conf


二、nginx.conf基本组成

1、全局块

从配置文件开始导events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令


2、events块

主要影响nginx服务器与用户的网络连接


3、http块

配置中最重要的部分。代理、缓存、日志等绝大多数功能和第三方模块的配置都在这里。

http块又包括http全局块和server块。

#全局块#这是nginx服务器并发处理服务的关键配置,work_processes值越大。可以支持的并发处理量也越多,但是会受硬件、软件等设备的制约worker_processes 1;

#events块#表示workprocess支持的最大连接数是1024events { worker_connections 1024;}
#http块http { #http全局块 include mime.types; default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;
#httpserver块 server { #监听本地的80端口 listen 80; server_name localhost;
location / { root html; index index.html index.htm; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
}
}


三、nginx配置实例——反向代理1

1、用上一章讲的docker知识启动tomcat,过程略。浏览器输入:

ngip:8080/tomcat

可以打开tomcat页面

从零开始学Nginx(二)——反向代理+负载均衡


2、修改C:\Windows\System32\cmd.exe\hosts

从零开始学Nginx(二)——反向代理+负载均衡

这个时候浏览器输入

www.123.com

跳转到nginx首页

从零开始学Nginx(二)——反向代理+负载均衡



3、修改nginx.conf。修改server_name,添加proxy_pass

proxy_pass http://127.0.0.1:8080/tomcat/;

从零开始学Nginx(二)——反向代理+负载均衡


4、重启nginx,浏览器再次输入

www.123.com

这个时候会跳转到tomcat页面

从零开始学Nginx(二)——反向代理+负载均衡

四、nginx配置实例——反向代理2

实现效果:根据访问的路径跳转到不同端口的服务中心去。nginx的监听端口为9091。

访问:ngip:9091/tomcat   跳转到8080端口,

访问:ngip:9091/vod   跳转到8081端口


1、我们已经启动好了一个8080端口的。现在来复习一下之前的docker知识,用docker-compose创建再启动一个docker容器

先创建一个conf文件夹,把c_tomcat里的server.xml复制宿主机conf目录:

docker cp c_tomcat:/usr/local/tomcat/conf/server.xml .


2、宿主机的server.xml端口修改成8081。

3、再新建一个webapps目录,里面建vod文件夹,再在vod文件夹里放index.html。

4、执行docker-compose:

version: "3"services: tomcat8081: image: tomcat restart: always volumes: - ./conf/server.xml:/usr/local/tomcat/conf/server.xml - ./webapps:/usr/local/tomcat/webapps ports: - "8081:8081"

5、执行完成后可以看到宿主机里面有2个tomcat容器

从零开始学Nginx(二)——反向代理+负载均衡6、访问ngip:8081/vod/

看到tomcat:8081则访问成功。

从零开始学Nginx(二)——反向代理+负载均衡


7、配置nginx的conf文件,http块里新增一个server

 server { listen 9091;        server_name  [ngip];
location ~ /tomcat/ {
proxy_pass http://127.0.0.1:8080; }
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;        }
}


8、重启nginx

访问ngip:9091/tomcat,

跳转到

ngip:8080/tomcat


从零开始学Nginx(二)——反向代理+负载均衡

访问ngip:9091/vod,

跳转到

ngip:8081/vod

从零开始学Nginx(二)——反向代理+负载均衡


五、nginx配置实例——负载均衡

实现效果:浏览器访问ngip:9092/vod/,实现负载均衡,

平均访问8081和8082端口。


1、新建一个tomcat容器来启动8082端口,

同时修改webapps/vod/index.html——8081dk,

webapps2/vod/index.html——8082dk来区分2个页面

version: "3"services: tomcat8082: image: tomcat restart: always volumes: - ./conf/server2.xml:/usr/local/tomcat/conf/server.xml - ./webapps2:/usr/local/tomcat/webapps ports: - "8082:8082"

从零开始学Nginx(二)——反向代理+负载均衡

从零开始学Nginx(二)——反向代理+负载均衡


2、配置nginx,在http块里添加下面代码:

 #负载均衡 upstream myserver {        server [ngip]:8081; server [ngip]:8082; }
server { listen 9092;        server_name  [ngip];
        location / { proxy_pass http://myserver; }
}

从零开始学Nginx(二)——反向代理+负载均衡


3、浏览器请求:http://10.11.7.20:9092/vod/

从零开始学Nginx(二)——反向代理+负载均衡


六、nginx负载均衡策略

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。


2、weight

weight代表权重,权重默认为1,权重越高被分配的客户越多。用于后端服务器性能不均的情况。

upstream myserver { server ngip:8081 weight=5; server ngip:8082 weight=10; }


3、ip_hash

每个请求按访问ip的hash分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream myserver {       ip_hash;       server ngip:8081;       server ngip:8082; }


4、fair(第三方的负载均衡模块)

按后端服务器的响应时间来分配请求,响应时间短的有线分配。

upstream myserver {       fair; server ngip:8081; server ngip:8082; }


nginx还是挺好玩的,每个配置都可以看成一个独立小游戏,学会了绝对不亏。