环境:
windows 7,IIS6服务器,Tomcat8服务器
域名有几个:
以下是使用IIS的域名(不是真实的,仅仅作为教程使用):
www.iis1.com
www.iis2.com
要使用Tomcat的域名:www.tomcat1.com www.tomcat2.com
问题:
该台VPS里面已经有好几个网站了(上面已给出),但是都是用IIS挂起来的。而我们开发了一个J2EE架构的网站,使用tomcat作为服务器。大家都知道,IIS既然已经用了80端口,那我的tomcat就不能用80端口了。这样一来,我们J2EE的网站必须在域名后加上8080作为域名了(http://www.tomcat1.com:8080/),这显然不符合要求。
于是我从网上寻找资料,他们一部分人用的是 IIS与Tomcat的桥接器 解决问题的,但是我操作了几个小时都没有解决,于是我寻找另外一个解决方案,后来想到Nginx有一个反向代理的功能,能将请求转发到本地的另外一些服务器。于是问题的解决方案为:使用Nginx反向代理方式使IIS和Tomcat兼容起来。
步骤:
首先确认tomcat和IIS两个服务器没有准确无误的运行起来。
下载Nginx,版本只要在1.1以上基本都行(我下载的是1.8.1)。
下载完毕后先讲其他所有占用80端口服务关掉,然后双击启动按钮图标,然后浏览器输入localhost 后出现nginx字段表示启动成功。
官方网址:http://nginx.org/en/download.html
1、修改IIS的所有网站项目的端口,修改为81(只要不是80和跟其他端口不冲突都可),因为我们的nginx服务器要占用80端口。
2、先找到tomcat目录,新建文件夹webapps_crm、webapps_ibeacon 与webapps同级,分别在新建的两个文件夹中创建一个空目录 ROOT (这里大写)
3、设置tomcat的配置文件:server.xml,打开:
其中:webapps_crm,webapps_ibeacon就是刚才创建的跟wabapps同级的目录名,
下面的做法是为了使用不同的域名访问不同 的项目。
我这里是两个域名访问两个项目,因此创建了两个host
<!--
appBase:就是刚才创建的新文件夹,也可以使用webapps这个。
name:就是需要进行绑定的域名
docBase:就是需要访问的项目跟路径 例如项目文件名为:CRM 则这里填写/CRM
配置这个完成后可以将相应文件war包放到对应文件目录下,然后启动tomcat就可以再页面访问项目了,例如:输入:www.tomcat2.com:8080/项目名 会直接进入项目主页了,这里是虚拟域名,就不做截图展示了。(当然这里是配置的8080端口,如果单纯配置80端口就不需要输入端口号了,本文是为了整合,因此没有改成80端口)
-->
<Host appBase="webapps_crm" autoDeploy="true" name="www.tomcat1.com" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context path="" docBase="/CRM" debug="0" reloadable="true"></Context>
</Host>
<Host appBase="webapps_ibeacon" autoDeploy="true" name="www.tomcat1.com" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context path="" docBase="/Records" debug="0" reloadable="true"></Context>
</Host>
4、来到nginx的conf目录,打开nginx.conf,对里面修改如下:
(这里主要是添加转发的域名,对于IIS我们全转发到对应域名加上81端口,对于tomcat的我们全是8080端口,其中Nginx监听80端口)
为了便于查阅,这里我贴上整个最基础配置代码:
#user nobody;
worker_processes 1;
#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;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name www.iis1.com;
location / {
proxy_pass http://www.iis1.com:81;
}
}
server {
listen 80;
server_name www.iis2.com;
location / {
proxy_pass http://www.iis1.com:81;
}
}
server {
listen 80;
server_name www.tomcat1.com;
location / {
proxy_pass http://www.tomcat1.com:8080;
}
}
server {
listen 80;
server_name www.tomcat2.com;
location / {
proxy_pass http://www.tomcat2.com:8080;
}
}
}
所有准备工作都准备完毕后,打开任务管理器进程,将nginx停止运行,然后右击nginx,以管理员身份运行,然后刷新任务管理器进程 ,会出现两个绿色的exe,此时表示服务已经启动。
这个时候你可以直接在浏览器输入域名,它会自动转发到你自己分配的页面。
注意点:tomcat启动第一次的时候可能不管用,没事,再次启动应该是没事了。我一般启动两次就不会有问题了。。。
以上便是所有的基本配置了,也是本人亲测成功的代码,希望对大家有帮助,同时也作为自己以后查阅的一份资料吧。