環境: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
因而我從網上尋找資料,他們一部分人用的是 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會幫你訪問這些網站。
整個配置就完成了。