环境:

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 &quot;%r&quot; %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 &quot;%r&quot; %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启动第一次的时候可能不管用,没事,再次启动应该是没事了。我一般启动两次就不会有问题了。。。

以上便是所有的基本配置了,也是本人亲测成功的代码,希望对大家有帮助,同时也作为自己以后查阅的一份资料吧。

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)`详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。