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

環境:nginx

windows server 2003,IIS6服務器,Tomcat7服務器web

域名有幾個:apache

如下是使用IIS的域名:windows

http://www.formuch.com/tomcat

http://www.formuch.cn/服務器

http://www.formuch.net/架構

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

問題:webapp

該臺VPS裏面已經有好幾個網站了(上面已給出),可是都是用IIS掛起來的。而咱們開發了一個J2EE架構的網站,使用tomcat做爲服務器。你們都知道,IIS既然已經用了80端口,那個人tomcat就不能用80端口了。這樣一來,咱們J2EE的網站必須在域名後加上8080做爲域名了(http://www.huilianvisa.com:8080/),這顯然不符合要求。tcp

因而我從網上尋找資料,他們一部分人用的是 IISTomcat的橋接器 解決問題的,可是我操做了幾個小時都沒有解決,因而我尋找另一個解決方案,後來想到Nginx有一個反向代理的功能,能將請求轉發到本地的另一些服務器。因而問題的解決方案爲:使用Nginx反向代理方式使IISTomcat兼容起來。

 

步驟:

首先確認tomcatIIS兩個服務器沒有準確無誤的運行起來。

下載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>

 

 

③來到nginxconf目錄,打開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;

        }

    }

}

 

ListenNginx監聽的端口(80),這裏不要改

server_name:Nginx監聽的域名。

proxy_pass:要轉發到的地址。

④打開IIS服務器,再打開Tomcat服務器,再打開Nginx服務器,訪問對應的域名,即Nginx配置中的server_name,記得不須要加端口!由於Nginx會幫你訪問這些網站。

整個配置就完成了。

相關文章
相關標籤/搜索