美文网首页
nginx 转发请求到多台tomcat

nginx 转发请求到多台tomcat

作者: jarvan4dev | 来源:发表于2015-11-18 13:14 被阅读1849次

如果你只有一台服务器,你可以安装两台tomcat,请参考:服务器上安装多台tomcat

另外本文还用到了子域名,请参考:子域名设置


由于这台服务器同时运行着一个网站,运行在nginx上,配置如下:

server{
     listen 80;
     server_name dev-heaven.com;
     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
     }
 }

下面开始转发配置:

upstream api.dev-heaven.com{
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}
server{
    listen 80;
    server_name api.dev-heaven.com;
    location / {
        proxy_pass http://api.dev-heaven.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

为了不影响主站,需要把主站的配置做修改:

server{
     listen 80;
     server_name dev-heaven.com www.dev-heaven.com;
     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
     }
 }

这样做是为了用www.dev-heaven.comdev-heaven.com能同时访问到主站。

注:server_name匹配规则如下:

  • 精准匹配,如:
server {
     listen       80;
     server_name  dev-heaven.com  www.dev-heaven.com;
}
  • 以*通配符开始的字符串,如:
server {
     listen       80;
     server_name  *.dev-heaven.com;
}
  • 以*通配符结束的字符串,如:
server {
     listen       80;
     server_name  www.*;
}
  • 匹配正则表达式,如:
server{
      listen 80; 
      server_name ~^(?.+)\.domain\.com$;
}

upstream命名应该和server_name保持一致,location中的proxy_pass的值必须以 http:// 开头,同时http://后面的值应该和upstream 后面的值保持一致。

为了测试,把tomcat webapps目录中ROOT中的index.jsp换成自己的index.jsp,内容分别是 “这是tomcat的第一个实例!!!”和“这是tomcat的第二个实例!!!”,这样就完成了。效果如下:

QQ截图20151118131412.png QQ截图20151118131434.png

相关文章

网友评论

      本文标题:nginx 转发请求到多台tomcat

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