1. 程式人生 > >nginx+tomcat實現單IP,多域名,多站點的訪問配置教程

nginx+tomcat實現單IP,多域名,多站點的訪問配置教程

其實這個問題分為兩個子問題來解決: 1.如何實現單IP多tomcat站點 2.對於多域名的多個站點如何通過nginx分發訪問 問題一:解決方案又分為兩種: a.單例項tomcat配置多個host站點 這種方法有一個缺點就是無法分站點除錯,如果一個站點出了問題,關服務進行除錯會停掉所有站點(不過這個方案就不會涉及到第二個問題,因為這樣單例項無法實現多個站點對應多個頂級域名)
b.多例項tomcat配置實現單機多站點 這個方法很簡單,就相當於把tomcat拷貝多份,然後修改各個tomcat的server.xml中的shutdown,http以及AJP1.3的埠,然後將tomcat例項啟動即可。不過這個對記憶體要求比較高,因為每個tomcat跑起來之後可能會佔200M左右記憶體,這還是對併發量比較小的,如果例項數一多起來,比如我們現在有個專案需要20多個站點放在一臺伺服器上(主要是貪腐無處不在,錢有但是不給你買硬體。。無力吐槽。。。。),這樣4G多的記憶體就吃掉了。 另外一點就是通過多例項配置多站點會有另外一個問題,可能每一個站點都有一個單獨的頂級域名,而域名的解析止於IP,因此埠的對映需要自己另做,這就涉及到了第二個問題如何解決了。 具體如何配置多例項實現單機多站點,可以參照下面幾個連結: 上面我說到可能會有記憶體溢位的問題,直接修改tomcat的記憶體引數,如果是linux直接修改catalina.sh即可,如果是windows的話需要修改登錄檔中Java的引數:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcat6.0\Parameters\Java
總體來講問題一比較好解決,原理上很簡單,單個例項無法除錯就用多個例項,多個例項需要多個埠,當記憶體不足時修改它的啟動引數,然後重啟就行了。 問題二:這裡我只說用nginx怎麼解決,網上有人apache貌似也能解決,我沒有弄成功 nginx是俄羅斯人寫的一個開源的web伺服器,國內的使用先驅是淘寶,而且貌似他們的工程師在寫一本叫《nginx從入門到精通》的書。nginx是一個非常優秀的web伺服器,可以說前途一片光明。 一般nginx現在多使用者做負載均衡,配合tomcat或者apache做分發,網上這個講的也很多,但是我要解決的問題不太相同,怎麼樣通過域名解析到不同埠,這得先說以下nginx的配置檔案。

nginx配置檔案位於conf/nginx.conf,它最主要的部分是http部分,這裡最重要的兩個配置項是upstream,server,這兩個項都可以有多個配置。

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	
    upstream www.aaa.com {  
			server 124.205.16.69:8090;      
    }  

    upstream www.bbb.com {  
			server 124.205.16.69:8100;
    }
	
    server {
        listen       80;
        server_name  www.aaa.com;

        location / {
            index  index.html index.jsp;    
            proxy_pass  http://www.aaa.com;    
            proxy_set_header    X-Real-IP   $remote_addr;    
            client_max_body_size    100m; 
        }
		
    }
	
    server {
        listen       80;
        server_name www.bbb.com;

        location / {
            index  index.html index.jsp;    
            proxy_pass  http://www.bbb.com;    
            proxy_set_header    X-Real-IP   $remote_addr;    
            client_max_body_size    100m; 
        }
    }
}
nginx+tomcat實現單IP,多域名,多站點的訪問 - 寒塘渡鶴影 - wuyanzan606——疏雲冷月 上圖是一個簡單的示意圖,描述了整個訪問的過程: DNS伺服器將域名解析到IP地址,nginx作為反向代理收到請求之後根據配置檔案將請求傳送到對應的tomcat例項。 我測試時nginx反向代理放在我本機上,tomcat例項在同一臺遠端伺服器,在hosts檔案中虛擬兩個域名假設為兩例項中的站點的域名。 我已經測試過,這個方案是可行的,