IIS tomcat共用80端口解决一个IP多个域名:使用

系统 2035 0

环境:

windows server 2003,IIS6 服务器, Tomcat7 服务器

域名有几个:

以下是使用 IIS 的域名:

http://www.formuch.com/

http://www.formuch.cn/

http://www.formuch.net/

要使用 Tomcat 的域名: http://www.huilianvisa.com/      http://huilianvisa.com/

问题:

该台 VPS 里面已经有好几个网站了(上面已给出),但是都是用 IIS 挂起来的。而我们开发了一个 J2EE 架构的网站,使用 tomcat 作为服务器。大家都知道, IIS 既然已经用了 80 端口,那我的 tomcat 就不能用 80 端口了。这样一来,我们 J2EE 的网站必须在域名后加上 8080 作为域名了( http://www.huilianvisa.com:8080/ ),这显然不符合要求。

于是我从网上寻找资料,他们一部分人用的是 IIS Tomcat 的桥接器  解决问题的,但是我操作了几个小时都没有解决,于是我寻找另外一个解决方案,后来想到 Nginx 有一个反向代理的功能,能将请求转发到本地的另外一些服务器。于是问题的解决方案为:使用 Nginx 反向代理方式使 IIS Tomcat 兼容起来。

 

步骤:

首先确认 tomcat IIS 两个服务器没有准确无误的运行起来。

下载 Nginx ,版本只要在 1.1 以上基本都行。

①修改 IIS 所有网站项目的端口,修改为 81 (只要不是 80 和跟其他端口不冲突都可),因为我们的 nginx 服务器要占用 80 端口。

 

②设置 tomcat 的配置文件: server.xml ,打开:

重点在于配置红色部分:包含端口( 82 ),监听的域名。(这里我已经把注释全去掉了,省事,这是整个 server.xml 文件)

<?xml version='1.0' encoding='utf-8'?>

 

<Server port="8005" shutdown="SHUTDOWN">

 

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

  <Listener className="org.apache.catalina.core.JasperListener" />

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

 

  <GlobalNamingResources>

 

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

  </GlobalNamingResources>

 

  <Service name="Catalina">

 

    < Connector port="82"  protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" URIEncoding="UTF-8" />

 

 

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

 

    <Engine name="Catalina" defaultHost="www.huilianvisa.com">

 

      <Realm className="org.apache.catalina.realm.LockOutRealm">

 

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

               resourceName="UserDatabase"/>

      </Realm>

 

      <Host name="www.huilianvisa.com"  appBase="webapps"

            unpackWARs="true" autoDeploy="true">

 

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log." suffix=".txt"

               pattern="%h %l %u %t "%r" %s %b" />

 

<Context path = "" docBase = "d:/website/hlcg_war_exploded"  />

 

      </Host>

    </Engine>

  </Service>

</Server>

 

 

③来到 nginx conf 目录,打开 nginx.conf ,对里面修改如下:

(这里主要是添加转发的域名,对于 IIS 我们全转发到对应域名加上 81 端口,对于 tomcat 的我们全加上 82 端口,其中 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.formuch.com;

 

        location / {

       proxy_pass   http://www.formuch.com:81;

        }

 

    }

 

    server {

        listen       80;

        server_name  www.formuch.net;

 

        location / {

       proxy_pass   http://www.formuch.net:81;

        }

    }

 

    server {

        listen       80;

        server_name  www.formuch.cn;

 

        location / {

       proxy_pass   http://www.huilianvisa.com:81;

        }

    }

 

    server {

        listen       80;

        server_name  www.huilianvisa.com;

 

        location / {

       proxy_pass   http://www.huilianvisa.com:82;

        }

    }

 

    server {

        listen       80;

        server_name  huilianvisa.com;

 

        location / {

       proxy_pass   http://www.huilianvisa.com:82;

        }

    }

}

 

Listen Nginx 监听的端口( 80 ),这里不要改

server_name: Nginx 监听的域名。

proxy_pass:要转发到的地址。

④打开 IIS 服务器,再打开 Tomcat 服务器,再打开 Nginx 服务器,访问对应的域名,即 Nginx 配置中的 server_name,记得不需要加端口!因为 Nginx 会帮你访问这些网站。

整个配置就完成了。

IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论