iis和tomcat同時執行,完美解決80埠衝突問題
背景:一臺vps伺服器上需要同時執行兩個網站,節(老)省(板)成(扣)本,用一個伺服器。一個是已經建好的官網(iis管理一鍵安裝的PHP網站),另一個是java 專案網站(jeecg框架修改的商城專案)。
問題:之前的官網已經執行著了,並且佔用著了80埠,然而新的網站也需要用到80埠,(你不可能讓使用者登入商城網站,網址後面手動加埠號吧!)
解決:使用Nginx反向代理方式使兩者相容
解決步驟:
環境:Windows server 2003 IIS7 Tomcat8
(後來升級成Windows server 2003 IIS8同樣可用)
IIS使用的域名:www.abc.com
要使用tomcat的域名:www.123.cn
首先IIS和Tomcat準確無誤的執行起來
下載Nginx,版本只要在1.1以上基本都行。官網下載地址
①修改IIS的所有網站專案的埠,修改為非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.123.cn">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm>
<Host name="www.123.cn" 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.123.cn;
location / { proxy_pass http://www.123.cn:81; }
}
server { listen 80; server_name www.abci.com;
location / { proxy_pass http://www.abc.com:82; } }
#可繼續按格式向下新增網址 }
|
Listen:Nginx監聽的埠(80),這裡不要改
server_name:Nginx監聽的域名。
proxy_pass:要轉發到的地址。
④開啟IIS伺服器,再開啟Tomcat伺服器,再開啟Nginx伺服器,訪問對應的域名,即Nginx配置中的server_name,記得不需要加埠!因為Nginx會幫你訪問這些網站。
搞定,外網訪問測試下吧
相關文章
- FLINK同時執行同步流和cdc流存在包衝突的問題--解決方案
- 解決Oracle XDB與Tomcat等的8080埠的衝突OracleTomcat
- git 解決版本衝突問題Git
- JAR衝突問題的解決JAR
- windows系統如何解決IIS佔用80埠的問題Windows
- Android 解決BottomSheetDialog 拖曳衝突問題Android
- GO 問題之多版本衝突解決Go
- Activemq和Rabbitmq埠衝突MQ
- Git Worktree:解決分支依賴衝突的問題Git
- JAR衝突問題的解決以及執行狀態下如何檢視載入的類JAR
- android NestedScrollView和ListView衝突問題AndroidView
- wsl docker 和 ubuntu 衝突問題DockerUbuntu
- H5-Jquery和Vue同時使用衝突H5jQueryVue
- IIS子目錄web.config與主站衝突解決方法Web
- 解決gerrit commit後pull發生衝突的問題MIT
- 依賴衝突時的解決方法
- git 解決衝突Git
- Git 解決衝突Git
- mysql執行truncate drop 時卡死問題解決MySql
- 解決tomcat埠占用Tomcat
- VMware無法啟動/VMware和wsl衝突問題/VMware與Hyper-V衝突問題
- 同時使用mybatis和mybatis-plus時,pageHelper失效問題解決MyBatis
- Apache和IIS共享80埠的四個設定方法Apache
- vue中 window.print() 解決列印和隱藏同時進行的問題Vue
- 程式衝突及其解決
- git pull 衝突解決Git
- hash衝突解決方法
- Git衝突解決技巧Git
- HTML中兩個tabs導航衝突問題的解決方法HTML
- Flutter和iOS手勢衝突解決思路FlutteriOS
- C#、IIS獲取時間帶星期問題解決C#
- 建立結算清單時提示衝突解決方案
- 問題雜記:友盟分享 SDK 和 load 載入耗時統計衝突問題
- windows解決埠占用問題Windows
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- 徹底解決SLF4J的日誌衝突的問題
- SVN解決衝突 記錄
- css命名衝突解決方法CSS