java要多思考下

          成長^_^

             ::  :: 新隨筆 ::  ::  :: 管理 ::
            33 隨筆 :: 0 文章 :: 19 評論 :: 0 Trackbacks
          當單臺應用已經無法應對日漸增長的訪問量時,我們往往會采用分布式部署,這里簡單介紹下單臺nginx結合多臺tomcat進行單應用部署的步驟:
          1、使用upstream,在nginx的nginx.conf文件中的加入如下配置:
          http {
          #.....這里省略其他配置
          upstream  abc.test.com  {
          server   192.168.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
          server   192.168.0.1:8082 weight=1 max_fails=2 fail_timeout=30s;
          server   192.168.0.2:8081 weight=1 max_fails=2 fail_timeout=30s;
          server   192.168.0.2:8082 weight=1 max_fails=2 fail_timeout=30s;
          }    
          #.....這里省略其他配置
          }
          2、增加一個server,對應被訪問的應用域名,如www.test.com
          server{
                          listen 80;
                          server_name www.test.com;
                          charset utf-8;
                          location / {
                                  proxy_pass http://abc.test.com;                      
                          }
                  }  
          3、在192.168.0.1和192.168.0.2兩臺服務器上各安裝2個tomcat,端口分別為8081,8082
          4、重啟Nginx,配置生效 nginx -s reload
          5、如上配置后,整個系統可以正常運行,但是我們的程序中往往會有獲取用戶真實ip的需求,但基于以上配置只能獲取到內網地址192.168.0.1和192.168.0.2
          要獲取真實ip地址,需要將第二步的配置改為:
          server{
          listen 80;
          server_name www.test.com;
          charset utf-8;
          location / {
          proxy_pass http://abc.test.com;    
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }
          同時在java應用中這樣獲取:request.getHeader("x-forwarded-for");
          6、這時,如果在系統中調用request.getServerName(),返回的也是內網ip,而不是www.test.com,需要增加如下配置
          proxy_set_header Host $host;
          注:當nginx和tomcat在一臺服務器上的話,這里是可以正確返回的。

          技術文章收藏站點


          posted on 2013-04-25 11:21 java要多思考下 閱讀(2304) 評論(2)  編輯  收藏 所屬分類: 系統運維

          評論

          # re: 【原】nginx均衡多tomcat環境配置,及這種環境下的remoteIp及ServerName獲取方式[未登錄] 2013-04-25 18:51 1
          1  回復  更多評論
            

          # re: 【原】nginx均衡多tomcat環境配置,及這種環境下的remoteIp及ServerName獲取方式[未登錄] 2013-04-25 18:51 1
          2  回復  更多評論
            

          主站蜘蛛池模板: 云霄县| 息烽县| 祥云县| 滦平县| 抚州市| 驻马店市| 香河县| 新昌县| 奉贤区| 宁都县| 余姚市| 海安县| 无极县| 图木舒克市| 丰城市| 南投市| 武鸣县| 政和县| 金昌市| 龙井市| 交城县| 衡阳县| 阿克| 临桂县| 手游| 海城市| 南部县| 玉龙| 德清县| 五大连池市| 清徐县| 武川县| 南涧| 额敏县| 广河县| 华宁县| 渝中区| 大方县| 芦溪县| 库尔勒市| 加查县|