使用nginx反向代理發布多個域名80端口的WEB服務


      在對外提供WEB頁面服務時,提供的域名通常需要隱藏端口號和項目名,例如像www.baidu.com。隱藏端口容易處理,將WEB容器的端口號修改為80即可滿足。如果要隱藏項目的名稱,在tomcat下,可以通過在server.xml中加入以下語句,在不輸入項目名的情況下,自動進入www.abc.com/websit對應的web服務。

<Context path="" docBase="/usr/local/tomcat/webapps/website" />

      另外如果想在一台服務器上部署多個WEB服務,也可以采用這種方式,並結合tomcat虛擬主機配置實現。

  虛擬主機在本文中不再贅述,這里要講是使用nginx來實現該功能。

      這種場景下的解決方案是利用nginx的反向代理功能,通過配置nginx,可以將訪問80端口、單域名不同的請求映射到WEB容器上不同的項目上,甚至WEB容器的端口號都可以不設置為80,因為常常nginx和WEB容器部署到同一台服務器上,這是80端口必須分配給nginx才能監聽到不到端口域名的訪問。nginx的配置內容如下所示:

server {
    listen       80;
        server_name  www.aaa.con aaa.con;
        location / {
         proxy_pass   http://www.aaa.con:8087/proj1/;
        }
     location /proj1/ {
  proxy_pass http://www.aaa.con:8087/proj1/;
    }
}
server {
  listen 80;
  server_name www.bbb.con bbb.con;
  location / {
    proxy_pass http://www.aaa.con:8087/proj2/;
  }

  location /proj2/ {
    proxy_pass http://www.aaa.con:8087/proj2/;
  }
}

      這段配置的意思是訪問www.aaa.com或者aaa.com的請求,會被nginx映射到http://www.aaa.con:8087/proj1/;而訪問www.bbb.com或者bbb.com的請求,會被映射到http://www.aaa.con:8087/proj2/。多配置location /proj1/的原因是避免CSS/JS等在html中設置了項目名路徑的資源因為nginx的反向代理造成丟失工程名而無法訪問到資源。

      這樣,我們就能夠在一台機器上發布針對若干個域名的WEB服務了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM