转自:http://www.jb51.net/article/100111.htm

首先我们需要安装好Nginx、jdk、Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述。

下来看一下我们的需求,我这里有三个网站项目工程需要部署(依次对应着三个域名),提供一台Linux服务器,要实现访问对应的域名跳转到对应的网站。

下来我们看一下为了解决这个问题,我所设计的体系架构图:

这里我们假定图中Linux服务器公网ip为192.168.2.100,然后假定要在这台服务器搭建这么三个站点:www.nginxtest.NET、admin.nginxtest.Net、app.nginxtest.net。

好了,下来我们具体配置一下:

1.配置Nginx反向代理

我们还是先连接SSH,然后进行下面操作(一般不建议修改默认主配置文件nginx.conf,所以我们新建负载均衡配置文件fxdl.conf,保证服务器安全,如下):

1
2
3
4
$ ssh root@192.168.2.100             //SSH连接
# cd /usr/local/nginx/conf
# touch fxdl.conf                 //创建代理配置文件
# vi fxdl.conf                  //用vi编辑器打开文件,然后按键盘的i

注意:vi编辑器中,键盘按 i 进入 INSERT 状态,按 Esc 退出 INSERT 状态。

然后输入以下配置代码(域名部分自定义更改成你们自己的域名,注释部分则按需开启):

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#设置低权限用户,为了安全而设置的
user nobody;
 
#工作衍生进程数
worker_processes 4;
 
#设置错误文件存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
 
#设置pid存放路径(pid是控制系统中重要文件)
#pid logs/nginx.pid;
 
#设置最大连接数
events{
  worker_connections 1024;
}
 
http {
  #用来设置日志格式
  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 /data/wwwlogs/access_nginx.log main;
 
  #开启高效文件传输模式
  sendfile      on;
  #防止网络阻塞
  tcp_nopush     on;
  #防止网络阻塞
  tcp_nodelay     on;
  #长连接超时时间,单位是秒
  keepalive_timeout  65;
  #散列表的冲突率,默认1024,越大则内存消耗更多,但散列key的冲突率会降低,检索速度就更快
  types_hash_max_size 2048;
 
  #文件扩展名与文件类型映射表
  include       /usr/local/nginx/conf/mime.types;
  #默认文件类型
  default_type    application/octet-stream;
 
  #include /etc/nginx/conf.d/*.conf;
 
  #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
  upstream tomcat_client {
    server localhost:8080;
  }
 
  #开启gzip压缩,开启后,访问网页会自动压缩
  #gzip on;
 
  #指定服务器的名称和参数
  server {
    listen 80;
    server_name app.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      #设置代理
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
  server {
    listen 80;
    server_name admin.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
  server {
    listen 80;
    server_name www.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
    location = / {
      #判断是否为手机移动端
      if ($http_user_agent ~* '(iPhone|ipod|iPad|Android|Windows Phone|Mobile|Nokia)') {
        rewrite . http://www.nginxtest.net/phone break;
      }
      rewrite . http://www.nginxtest.net/pc break;
    }
  }
}

好了就是这么简单,Nginx反向代理配置完毕。下来配置Tomcat:

2.配置Tomcat部署多个站点

1
2
3
4
$ ssh root@192.168.2.100             //SSH连接
# cd /usr/local/tomcat
# cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml_bk //备份server.xml原文件
# vi server.xml                  //用vi编辑器打开文件,然后按键盘的i

我们编辑server.xml,Engine节点下添加以下HOST节点(节点中的域名和站点工程目录需要自定义修改为你们自己的):

1
2
3
4
5
6
7
8
9
10
11
12
<Host name="www.nginxtest.net" unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/" docBase="/data/wwwroot/www.nginxtest.net/WebContent" reloadable="true"/>
</Host>
<Host name="admin.nginxtest.net" unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/" docBase="/data/wwwroot/admin.nginxtest.net/WebContent" reloadable="true"/>
</Host>
<Host name="app.nginxtest.net" unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/" docBase="/data/wwwroot/app.nginxtest.net/WebContent" reloadable="true"/>
</Host>

注意:如果你想要实现直接访问公网ip无网页效果,删除Engine节点下的

1
<Host name="localhost" ..>..</Host>

即可。

输入完成后按下Esc,然后输入:

1
:wq!

就可以保存并退出配置文件了。到此,Tomcat也配置完毕了。

接下来我们就可以将我们的多个站点工程代码放在 /data/wwwroot/ 下了。然后启动Nginx和Tomcat。

现在可以试一下,分别访问每个站点的二级域名www.nginxtest.net、admin.nginxtest.net、app.nginxtest.net,我们发现已经可以跳转到对应的站点了(和每个站点分别部署一台服务器,看到的效果是一样的)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

原文链接:http://blog.csdn.net/smartbetter/article/details/53615313

详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点的更多相关文章

  1. Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点

    上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访问量并不是很大,基于这个 ...

  2. 项目详解4—haproxy 反向代理负载均衡

    一.企业服务架构图及负载均衡的要求 1.场景说明 在企业生产环境中,每天会有很多的需求变更,比如增加服务器.新业务上线.url路由修改.域名配置等等,对于前端负载均衡设备来说,容易维护,复杂度低,是首 ...

  3. nginx+tomcat反向代理下使用tomcat-redis-session-manager进行session共享中值得注意的一个问题

    公司目前项目使用nginx反向代理+多个tomcat进行负载均衡,之前使用ip_hash策略进行session控制.近期有考虑不再使用ip_hash策略,所以需要进行session共享. 根据项目实际 ...

  4. nginx + tomcat 反向代理

    简单的配置:# my test java+nginx project server { listen ; server_name localhost; root /home/user/Desktop/ ...

  5. nginx+tomcat 反向代理 负载均衡配置

    1.nginx的安装和配置见:http://www.cnblogs.com/ll409546297/p/6795362.html 2.tomcat部署项目到对应的服务器上面并启动,不详解 3.在ngi ...

  6. Nginx+Tomcat反向代理利用certbot实现https

    一.利用Let's Encrypt 免费生成HTTPS证书 1.下载安装certbot(Let's Encrypt ) 2.利用certbot生成证书 3.配置nginx的https证书 安装cerb ...

  7. nginx+tomcat反向代理

    第一步:编辑nginx的配置文件 #服务转发一 upstream tomcat8080{ server 192.168.1.6:8080; } #服务转发二 upstream tomcat8081{ ...

  8. [转]使用Nginx实现反向代理

    使用Nginx实现反向代理 解释 正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问 ...

  9. windows版 nginx配置反向代理实例教程 跳转tomcat和php网站

    抄自 https://www.cnblogs.com/j-star/p/8785334.html 个人理解 nginx端口设置为80,简称n tomcat端口设置为其他,例如8080,简称t php网 ...

随机推荐

  1. Revit API取得变量的内参名称

    与取得元素变量的内参名称类别有个BuiltInParameter //取得内参名称 [Transaction(TransactionMode.Manual)] [Regeneration(Regene ...

  2. 如何给Windows Server 2012 R2 添加“磁盘清理”选项

    最近想做一个试验,把我的Windows Server 2008 R2 升级为Server 2012 R2,因为手头没有Raid卡和网卡的驱动,所以做了升级安装,于是那个讨厌的Windows.old出现 ...

  3. 在树莓派2上安装 Windows 10

    微软在2015年4月29日发布了树莓派玩家期待已久的 Windows 10 物联网核心预览版(Windows 10 IoT Core Insider Preview Image for Raspber ...

  4. 魔兽私服TrinityCore 运行调试流程

    配置参见上一篇:TrinityCore 魔兽世界私服11159 完整配置 (1)启动Web服务器 打开TC2_Web_Mysql目录,运行“启动Web服务器.exe” 自动弹出帐号注册界面,并启动Ap ...

  5. 使用Coding4Fun工具包

    Coding4Fun是一款很受WP开发者喜爱的开源类库,对于开发者来说,Coding4Fun上手很简单.只要从CodePlex下载Coding4Fun工具包,下载完成后,解压文件到一个文件夹中,里面有 ...

  6. 清除数据库表、外键、存储过程SQL

    1.删除所有外键 )    begin         exec(@c1)        fetchnextfrom c1 into@c1    endclose c1deallocate c1 2. ...

  7. mysql 筛选重复项(单列或者多列同时重复)

    原文:https://blog.csdn.net/luyaran/article/details/80929026 -------------单列----------------------- SEL ...

  8. UIView 的旋转和缩放

    原文地址:http://www.cnblogs.com/gaoxiao228/archive/2012/05/04/2483577.html label.transform = CGAffineTra ...

  9. 几种常见的JavaScript混淆和反混淆工具分析实战

    几种常见的JavaScript混淆和反混淆工具分析实战 xiaix2016-03-05+8共1195751人围观 ,发现 5 个不明物体WEB安全 信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试 ...

  10. MAPI错误0x80040107

    MAPI错误0x80040107  的解决方案: The MAPI error means there's an "invalid entry" within the contac ...