惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
博客园_首页
S
SegmentFault 最新的问题
罗磊的独立博客
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
D
Docker
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
V
V2EX
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
腾讯CDC
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
Vercel News
Vercel News
H
Help Net Security
博客园 - Franky
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏

博客园 - 漂泊雪狼

关于SeaTunnel 达梦数据迁移无法自动建表的问题 Kettel链接达梦数据 Elastic Job 入门笔记 记一次Spring boot集成mybatis错误修复过程 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Spring Boot 框架下使用MyBatis访问数据库之基于XML配置的方式 CentOS7下载配置PostgreSQL的pgAgent运行代理作业 ElasticSearch 中文分词搜索环境搭建 学习笔记——Ubuntu下使用Docker包部署禅道任务管理系统 windows下的Redis主从集群搭建 asp.net mvc5中使用Swagger 自动生成WebApi文档笔记 Centos 7.5下搭建SVN源代码服务器 使用Fiddler 4 调用WebService 获取geometry边界范围的示例代码 使用pgrouting进行最短路径搜索 Nginx设置防止IP及非配置域名访问 java 调用c# web api 代码 利用Kettle 从Excel中抽取数据写入SQLite sql server 统计信息 sql server 索引碎片相关问题
一台机器部署多个tomcat服务 nginx反向代理多个服务 笔记
漂泊雪狼 · 2017-12-08 · via 博客园 - 漂泊雪狼
  • 安装tomcat步骤 

          1. 下载apache-tomcat-8.0.30 ,下载下来的文件为apache-tomcat-8.0.30-windows-x64.zip

          2. 解压该压缩包到D:/目录下。

          3. 修改解压文件夹名字为:tomcat-8080

          4. 在D:/目录下创建该文件夹的两个副本,分别更名为:tomcat-8081、tomcat-8082

          5. 添加环境变量:右键单击我的电脑->选择属性->选择高级->选择环境变量:添加系统变量:

               CATALINA_HOME_8080,其值为:D:\tomcat-8080;

               CATALINA_HOME_8081,其值为:D:\tomcat-8081;

               CATALINA_HOME_8082,其值为:D:\tomcat-8082;

          6. 修改启动端口和关闭端口:

               进入D:\tomcat-8081\conf\目录,打开server.xml文件,修改下面两个地方:

               (1)<Server port="8006" shutdown="SHUTDOWN">

                         修改这个port=”8006”,使得它的关闭端口和另一个关闭端口不发生冲突。

               (2)<Connector port="8081" maxHttpHeaderSize="8192"

                              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

                              enableLookups="false" redirectPort="8443" acceptCount="100"

                              connectionTimeout="20000" disableUploadTimeout="true" />

                         修改port=”8081”,使得它的连接端口和另一个不冲突。

               (3)<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

                         修改这个port=”8010”,使得它的AJP端口和另一个不冲突。

          7. 修改startup.bat、shutdown.bat和catalina.bat文件内容:

               (1) 打开D:\tomcat-8081\bin\startup.bat文件,把其中所有CATALINA_HOME替换为CATALINA_HOME_8081。

               (2) 打开D:\tomcat-8081\bin\shutdown.bat文件,把其中所有CATALINA_HOME替换为CATALINA_HOME_8081。

               (3) 打开D:\tomcat-8081\bin\catalina.bat文件,把其中所有CATALINA_HOME替换为CATALINA_HOME_8081。

          9.按照上述方法配置tomcat-8080 ,tomcat-8082。

          10.启动Tomcat,在命令行下分别进入三个不同的Tomcat安装目录下,执行startup.bat,分别启动三个Tomcat。然后在浏览器中输入以下内容,如果显示tomcat主页,则部署成功:

       http://localhost:8080

       http://localhost:8081

  • 将tomcat配置成服务

          1.进入tomcat-8080/bin目录,修改 service.bat,找到以下内容,修改SERVICE_NAME为自定义的服务名

               rem Set default Service name

               set SERVICE_NAME=tomcat8080

               set DISPLAYNAME=Apache Tomcat 8.0 %SERVICE_NAME%

          2.在service.bat中搜索CATALINA_HOME,并全部替换为CATALINA_HOME_8080(与环境变量名保持一致)

          3.在tomcat-8080/bin目录下,找到tomcat8.exe和tomcat8w.exe,重命名为SERVICE_NAME配置的名字一致,这里重命名为tomcat8080.exe和tomcat8080w.exe 这个其实可以不改

          4.使用命令行进入tomcat-8080/bin,执行service.bat install

          5.使用win+r输入services.msc进入服务界面,找到DISPLAYNAME对应的服务名(即Apache Tomcat 8.0 tomcat8080),右键选择“属性”菜单,在“常规”选项卡选择“启动类型”为“自动”,或者进入tomcat-8080/bin目录 ,双击tomcat8080w.exe,在弹出的界面选中General选项卡,选择Startup type为Automatic,即开机自启动

nginx配置


location  = / {
  # 精确匹配 / ,主机名后面不能带任何字符串
  [ configuration A ] 
}

location  / {
  # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
  # 但是正则和最长字符串会优先匹配
  [ configuration B ] 
}

location /documents/ {
  # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ configuration C ] 
}

location ~ /documents/Abc {
  # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ configuration CC ] 
}

location ^~ /images/ {
  # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
  [ configuration D ] 
}

location ~* \.(gif|jpg|jpeg)$ {
  # 匹配所有以 gif,jpg或jpeg 结尾的请求
  # 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
  [ configuration E ] 
}

location /images/ {
  # 字符匹配到 /images/,继续往下,会发现 ^~ 存在
  [ configuration F ] 
}

location /images/abc {
  # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
  # F与G的放置顺序是没有关系的
  [ configuration G ] 
}

location ~ /images/abc/ {
  # 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
    [ configuration H ] 
}

location ~* /js/.*/\.js

实际在用的配置

#user  nobody;
worker_processes  2;

#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 {
    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;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;

 #服务器的集群  
    #upstream  localhost{  #服务器集群名字  
       
    #server    localhost:80;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。
    #server    10.10.10.121:80;
     #ip_hash;
    #}     

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

       
       location /back/ {
            proxy_pass      http://192.168.3.236:8080/back/; #后面的斜杠不能少,作用是不往后端传递/mail-api 这个路径
            #roxy_redirect  off;
            #proxy_set_header  Host  mailapi.domain.com; #传递不同的host给后方节点,实现IP和域名均可以访问
            #proxy_set_header Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location /common/ {
            proxy_pass      http://192.168.3.236:8088/common/; 
            #proxy_redirect  off;
            #proxy_set_header Host $host;
           # proxy_set_header  Host  otherapi1.domain.com;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        
  
        location = / {
        #proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://192.168.3.236:8080/back/login;
        }

        #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 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

proxy_pass依然能够使用error_page

  location / {
            proxy_pass https://10.10.10.244:444;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_intercept_errors on;
            proxy_redirect default;
        }

windows下重启nginx

net stop nginx
taskkill /f /t /im nginx.exe

net start nginx