美文网首页
nginx反向代理2台tomcat实践(使用docker-com

nginx反向代理2台tomcat实践(使用docker-com

作者: lazyguy | 来源:发表于2018-01-11 15:57 被阅读0次

title: nginx反向代理2台tomcat实践(使用docker-compose)
date: 2016-12-22 09:32:44
tags: nginx proxy_pass docker-compose
categories: nginx


此篇blog是笔者读《Nginx.From.Beginner.to.Pro》第8章的实践总结

首先准备实践环境

安装docker和docker-compose细节略过

新建单独的文件夹作为实验环境

在我电脑上位置:/Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/

结构和内容如下图:

image.png

其中nginx.conf,mime.types,html文件夹是nginx配置需要的相关文件(直接从nginx安装包中拷出)。
而tomcat1和tomcat2里是部署时需要的2个webapp,分别有2个默认页面显示app1字样和app2字样。
这都是在部署docker容器时修改配置需要的。

接下来一一细说:

docker-compose.yml内容

nginx:
 container_name:
  nginx
 image:
  nginx
 ports:
  - 81:80
 volumes:
  - /Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/nginx.conf:/etc/nginx.conf
  - /Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/mime.types:/etc/mime.types
  - /Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/html/:/etc/html
 command:
  nginx -g 'daemon off;' -c /etc/nginx.conf
 links:
  - tomcat1
  - tomcat2
tomcat1:
 container_name:
  tomcat1
 image:
  tomcat:8-jre8
 ports:
  - 8081:8080
 volumes:
  - /Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/tomcat1/app.war:/usr/local/tomcat/webapps/app.war

tomcat2:
 container_name:
  tomcat2
 image:
  tomcat:8-jre8
 ports:
  - 8082:8080
 volumes:
  - /Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/tomcat2/app.war:/usr/local/tomcat/webapps/app.war
  

其中分别定义了3个container,nginx,tomcat1,tomcat2。
nginx的links指令,将tomcat1和tomcat2挂载到nginx的container下(这里实际就是在nginx的container的etc/hosts下写入了tomcat1和tomcat2的名字和ip映射,细节参阅docker-compose的wiki)

注意我在容器启动的时候挂载的都是具体的文件,如:
Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/nginx.conf:/etc/nginx.conf
如果写成这样:
Users/tobi/Documents/dockerCompose_workspace/nginx_tomcat/:/etc/
就覆盖了容器内/etc/下原有的文件,所以最好别这么做。
当然容器启动想使用新的配置也可以创建新的image。

nginx.conf中的核心配置

upstream backend{
        server tomcat1:8080;
        server tomcat2:8080;
        }
    server {
        listen       80;
        server_name  localhost;


        #access_log  logs/host.access.log  main;
        location /app {
           # root   html;
            proxy_pass http://backend;
            index  index.html index.htm;
        }

注意proxy_pass代理的路径最后是否加上"/"意义完全不同。
比如这,不加代表最后访问的路径是http://backend/app/
而如果配置写的是proxy_pass http://backend/;
则访问的是http://backend/

输入命令docker-compose up启动3个容器,访问localhost:81/app

浏览器交替显示tomcat1/app和tomcat2/app的内容:app1,app2。
因为nginx中upstream的默认均衡策略是Round-Robin轮询。

nginx其他常见的负载策略

upstream backend{  
   least_conn;
   server 10.0.2.6 weight=1;
   server 10.0.2.7 weight=1;
}

顾名思义,连接被代理到最少活跃connection的后台服务器上

upstream backend{        
   ip_hash;        
   server 10.0.2.6;        
   server 10.0.2.7;
   }

按照ip哈希,当你的后台存有状态比如session,希望同一个客户端被代理到同一台tomcat时使用。

upstream backend{        
    hash $scheme$request_uri;
    server 10.0.2.6;         
    server 10.0.2.7;
    }

按照请求的url进行hash。

定制http header

nginx反向代理tomcat的时候,会影响tomcat接收到的http header头

例如nginx会自动去掉没有值得空header头

不能使用下划线(可以修改)

tomcat如果要得到客户端真实的ip,nginx需要在location中设置

proxy_set_header X-Real-IP $remote_addr;(相当于设置了一个X-Real-IP的header头)

相关文章

  • nginx反向代理2台tomcat实践(使用docker-com

    title: nginx反向代理2台tomcat实践(使用docker-compose)date: 2016-12...

  • Tomcat

    方案二: Nginx+Tomcat方案三: 使用nginx做反向代理负载均衡 建议使用Nginx和Tomca...

  • 第十九周作业

    1、搭建Tomcat集群,并通过nginx反向代理访问 反向代理示意图 测试环境: Nginx: 172.16.1...

  • 配置LNMT,LAMT反向代理

    如何使用NGINX反向代理用户请求至Tomcat的http连接器的8080端口完成反向代理 (一) 虚拟机node...

  • nginx & tomcat 获取正确端口号

    我们经常会使用 nginx 作为反向代理,为 tomcat 提供负载均衡功能。但是往往,nginx 对外提供的协议...

  • nginx反向代理tomcat访问报错400

    一、 错误环境说明   之前一直在用nginx反向代理tomcat7.0.76。今天使用的是tomcat7.0....

  • 第二十周

    1、搭建Tomcat集群,并通过nginx反向代理访问 测试环境: Nginx: 172.16.100.151 T...

  • 使用 Nginx 反向代理 Tomcat

    概述 最近由于业务需求,需要将 Tomcat 的 8080 端口映射到 443 ,直接通过 https 访问,由于...

  • 借助Nginx搭建反向代理服务器

    借助Nginx搭建反向代理服务器 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器 一、反向代理:We...

  • spring-boot ssl

    简介 服务采用nginx反向代理+tomcat做web container 方案 nginx层,需要增加支持 注意...

网友评论

      本文标题:nginx反向代理2台tomcat实践(使用docker-com

      本文链接:https://www.haomeiwen.com/subject/bzqtoxtx.html