详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
转自: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 反向代理 如何在高效的在一台服务器部署多个站点的更多相关文章
- Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
		
上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访问量并不是很大,基于这个 ...
 - 项目详解4—haproxy 反向代理负载均衡
		
一.企业服务架构图及负载均衡的要求 1.场景说明 在企业生产环境中,每天会有很多的需求变更,比如增加服务器.新业务上线.url路由修改.域名配置等等,对于前端负载均衡设备来说,容易维护,复杂度低,是首 ...
 - nginx+tomcat反向代理下使用tomcat-redis-session-manager进行session共享中值得注意的一个问题
		
公司目前项目使用nginx反向代理+多个tomcat进行负载均衡,之前使用ip_hash策略进行session控制.近期有考虑不再使用ip_hash策略,所以需要进行session共享. 根据项目实际 ...
 - nginx + tomcat 反向代理
		
简单的配置:# my test java+nginx project server { listen ; server_name localhost; root /home/user/Desktop/ ...
 - nginx+tomcat 反向代理 负载均衡配置
		
1.nginx的安装和配置见:http://www.cnblogs.com/ll409546297/p/6795362.html 2.tomcat部署项目到对应的服务器上面并启动,不详解 3.在ngi ...
 - Nginx+Tomcat反向代理利用certbot实现https
		
一.利用Let's Encrypt 免费生成HTTPS证书 1.下载安装certbot(Let's Encrypt ) 2.利用certbot生成证书 3.配置nginx的https证书 安装cerb ...
 - nginx+tomcat反向代理
		
第一步:编辑nginx的配置文件 #服务转发一 upstream tomcat8080{ server 192.168.1.6:8080; } #服务转发二 upstream tomcat8081{ ...
 - [转]使用Nginx实现反向代理
		
使用Nginx实现反向代理 解释 正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问 ...
 - windows版 nginx配置反向代理实例教程 跳转tomcat和php网站
		
抄自 https://www.cnblogs.com/j-star/p/8785334.html 个人理解 nginx端口设置为80,简称n tomcat端口设置为其他,例如8080,简称t php网 ...
 
随机推荐
- Revit API取得变量的内参名称
			
与取得元素变量的内参名称类别有个BuiltInParameter //取得内参名称 [Transaction(TransactionMode.Manual)] [Regeneration(Regene ...
 - 如何给Windows Server 2012 R2 添加“磁盘清理”选项
			
最近想做一个试验,把我的Windows Server 2008 R2 升级为Server 2012 R2,因为手头没有Raid卡和网卡的驱动,所以做了升级安装,于是那个讨厌的Windows.old出现 ...
 - 在树莓派2上安装 Windows 10
			
微软在2015年4月29日发布了树莓派玩家期待已久的 Windows 10 物联网核心预览版(Windows 10 IoT Core Insider Preview Image for Raspber ...
 - 魔兽私服TrinityCore 运行调试流程
			
配置参见上一篇:TrinityCore 魔兽世界私服11159 完整配置 (1)启动Web服务器 打开TC2_Web_Mysql目录,运行“启动Web服务器.exe” 自动弹出帐号注册界面,并启动Ap ...
 - 使用Coding4Fun工具包
			
Coding4Fun是一款很受WP开发者喜爱的开源类库,对于开发者来说,Coding4Fun上手很简单.只要从CodePlex下载Coding4Fun工具包,下载完成后,解压文件到一个文件夹中,里面有 ...
 - 清除数据库表、外键、存储过程SQL
			
1.删除所有外键 ) begin exec(@c1) fetchnextfrom c1 into@c1 endclose c1deallocate c1 2. ...
 - mysql 筛选重复项(单列或者多列同时重复)
			
原文:https://blog.csdn.net/luyaran/article/details/80929026 -------------单列----------------------- SEL ...
 - UIView 的旋转和缩放
			
原文地址:http://www.cnblogs.com/gaoxiao228/archive/2012/05/04/2483577.html label.transform = CGAffineTra ...
 - 几种常见的JavaScript混淆和反混淆工具分析实战
			
几种常见的JavaScript混淆和反混淆工具分析实战 xiaix2016-03-05+8共1195751人围观 ,发现 5 个不明物体WEB安全 信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试 ...
 - MAPI错误0x80040107
			
MAPI错误0x80040107 的解决方案: The MAPI error means there's an "invalid entry" within the contac ...