環境:
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 會幫你訪問這些網站。
整個配置就完成了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
