nginx 反向代理至内网另一台机器上的tomcat 应用

问答中心分类: JAVAnginx 反向代理至内网另一台机器上的tomcat 应用
匿名用户 asked 9 年 ago
场景描述:
  同一公有IP 内网下2台虚拟机. 
  主机A --> 80 nginx   172.16.1.141
  主机B --> 8080 tomcat 172.16.1.151
现象
在主机A中添加 xxx.xx.com 站点,同时由于程序源路径不在本机,手动修改了下nginx-->conf-->vhost->xx对应域名配置文件)
以下是配置:
```bash

server {
listen 80;
server_name  xxx.xxx.cn;
charset utf-8;
access_log /data/wwwlogs/xxx.xxx.cn_nginx.log combined;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.151:8080/app;
}

}
```
151主机tomcat ->webapp下 放的是解压后的应用app文件夹. 启动正常.
通过ip:8080/app 访问正常.
但是我通过外网域名访问  就没转发到tomcat容器中
 
问题二: 我尝试把 151 tomcat ->conf->vhost-> localhost.xml 配置文件中default的路径修改为应用路径
想通过 http://ip:8080 方式访问,结果直接应用都无法启动.(`没错误信息.是我程序有点问题,jdk6搭配的tomcat7`)
但是我一替换回默认配置,我的应用又可以启动,太诡异了.
 
 
ps: 我在有的主机上执行./install 时会响应老半天才弹出是否ssh 端口在22的文字,这是什么原因呢?

1 Answers
oneinstack answered 9 年 ago
如果网站根目录下有多个子目录项目,比如默认/data/wwwroot/default里面有name1、name2
需要修改/usr/local/tomcat/conf/vhost/localhost.xml
 <Context path="name1" docBase="/data/wwwroot/default/name1" debug="0" reloadable="true" crossContext="true"/>
 <Context path="name2" docBase="/data/wwwroot/default/name2" debug="0" reloadable="true" crossContext="true"/>
重启tomcat