Nginx之代理配置以及负载均衡

来源:互联网 发布:淘宝短链 编辑:程序博客网 时间:2024/05/01 14:41

转:http://blog.csdn.net/uq_jin/article/details/51426681

配置Nginx代理静态资源以及代理动态资源(与Tomcat整合)。

Nginx 配置代理静态资源

cd /opt/soft/nginx-1.10.0vi ./conf/nginx.conf
  • 1
  • 2
  • 1
  • 2

在http{}块里Nginx默认监听的是80端口,root目录为当前目录的html文件夹,index 为index.html …. 
这里写图片描述

配置Nginx监听8888端口

为便于测试我们自己配置一个server监听,与原来的server 并列,配置我们的匹配规则,规则见注释, 
记住得开放8888端口

#测试代理静态资源#开放8888端口来测试#firewall-cmd --zone=public --add-port=8888/tcp --permanent#firewall-cmd --reloadserver {    #监听8888端口    listen       8888;    server_name  localhost;    #匹配 localhost:8888/    location / {        #设置在/usr/images文件夹下找资源        root   /usr/images;        #如果在root下没找到就默认显示1.png        index  1.png;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

因为/usr下没有images文件夹,我们得自己创建并上传一张1.png的图片

重启Nginx

./sbin/nginx -s reload
  • 1
  • 1

直接访问 192.168.2.202:8888

这里写图片描述

可以看的我们并没有指定任何资源,就会在root指定的目录下找index对应的 1.png,和我们直接访问 
192.168.2.202:8888/1.png 的效果是一样的。

这里写图片描述

由此我们访问了一个静态资源。

Nginx 配置代理动态资源

新配置一个server来监听8889来实现和Tomcat整合

#测试代理动态资源#开放8889端口来测试#firewall-cmd --zone=public --add-port=8889/tcp --permanent#firewall-cmd --reloadserver {    #监听8889端口    listen       8889;    server_name  localhost;    #匹配 localhost:8889/    location / {        #指定跳转地址        proxy_pass http://localhost:8080;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

先测试Tomcat的默认端口8080:

这里写图片描述

再测试Nginx的代理端口8889:

这里写图片描述

同样跳转到了Tomcat下,说明配置成功。

Nginx 配置动静分离实例

我们在Tomcat下的webapps/ROOT目录下新建一个test.jsp文件

<body>    hello tomcat!<br/>    <img alt="美女" src="/images/1.png"></body>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

这里看出,我们访问 http://192.168.2.202:8080/test.jsp 然后这个jsp页面会访问 http://192.168.2.202:8080/images/1.png 然而我们是没有这个images文件夹和1.png图片的如下:

这里写图片描述

现在我们用Ngnix来实现代理,如果是访问路径为/images 的请求就用ngnix代理到/usr/images 下去找资源,而其他请求交给Tomcat处理。

上面我们用8888端口访问静态资源用8889访问动态资源,现在我们新建一个端口8000来访问一个示例实现动态资源通过Tomcat访问,静态通过Nginx自己代理。 
配置服务如下:

#测试代理动态资源#开放8000端口来测试#firewall-cmd --zone=public --add-port=8000/tcp --permanent#firewall-cmd --reloadserver {    #监听8000端口    listen       8000;    server_name  localhost;    #匹配 localhost:8000/    location / {        #指定跳转地址        proxy_pass http://localhost:8080;     }    #匹配 localhost:8000/images/    location /images{        #设置在/usr/images文件夹下找资源        root   /usr;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

查看访问效果:

这里写图片描述

可以看到,我们在Tomcat下虽然没有图片,但是我们使用Nginx代理,就可以指定jsp访问的静态资源的位置,从而实现动静分离,减少Tomcat的服务器压力,当然这只是简单的示例,我们可以设置location的匹配规则,rewrite的规则,以及配置Tomcat的默认路径来实现更方便的动静分离效果。后面会继续整理。下面我们看下Nginx实现简单的负载均衡。

Nginx实现负载均衡

查看官方文档配置负载均衡很简单如下:

这里写图片描述

我们配置负载均衡的两个服务器分别为192.168.2.201 192.168.2.202 如下:

#配置负载均衡upstream tomcat {    server 192.168.2.201:8080;    server 192.168.2.202:8080;}#测试代理动态资源#开放8000端口来测试#firewall-cmd --zone=public --add-port=8000/tcp --permanent#firewall-cmd --reloadserver {    #监听8000端口    listen       8000;    server_name  localhost;    #匹配 localhost:8000/    location / {        #指定跳转地址        proxy_pass http://tomcat;    }    #匹配 localhost:8000/images/    location /images {        #设置在/usr/images文件夹下找资源        root   /usr;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

同时在 192.168.2.201的Tomcat下webapps/ROOT下加入test.jsp 如下:

hello tomcat 192.168.2.201<br/>
  • 1
  • 1

访问测试:

这里写图片描述

可以看的,刷新的时候分别指向了不同的服务器的Tomcat下的test.jsp文件

至此,基本对Nginx的代理设置已经负载均衡有一定的了解了,后续还会有更多用法。


原创粉丝点击