`
qpgong
  • 浏览: 22608 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

nginx 负载 整合内网tomcat7 应用时,解决无法访问的问题

阅读更多

本文主要讲如何通过nginx建立内网tomcat7的负载均衡服务。

先看个简单的nginx转发的例子:访问nginx的80端口时,转发到192.168.1.101:8080。

server {

        listen       80;

        server_name  localhost;

        location / {

              proxy_pass http://192.168.1.101:8080;               //局域网内的一个应用

              proxy_redirect    off;

              proxy_set_header  Host             $host;                //主机名

              proxy_set_header  X-Real-IP     $remote_addr;  //remote_addr真实的访问者IP

              proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; //传入的X-Forwarded-For header

      }

    其他省略...

}

如果服务压力大,我们会通常建立负载均衡服务器,也就是nginx做入口,nginx把请求转发到多个真实的处理服务器上。这里需要引入一个ngxin的概念,upstream;那么如何建立一个负载均衡服务器呢?配置如下:

upstream  pool {   //upstream就是资源池的概念。

         server  192.168.1.101:8081;

         server   192.168.1.101:8080;

}

server {

        listen       80;

        server_name  localhost;

        location / {

              proxy_pass http://pool ;                                      //这里的转发修改为池

              proxy_redirect    off;

              proxy_set_header  Host             $host;                //主机名

              proxy_set_header  X-Real-IP     $remote_addr;  //remote_addr真实的访问者IP

              proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; //传入的X-Forwarded-For header

      }

    其他省略...

}

这里访问http://nginx/服务时,实际上会由http://192.168.1.101:8081/与http://192.168.1.101:8080/ 两个池中的资源进行详细的业务处理。但是大家可能遇到一个问题:配置为资源池后,会出现nginx服务无法正常访问的问题。这个问题会出现在tomcat原始服务器绑定在内网IP上的应用上。

----------------------------------------------------------解决方案-----------------------------------------------------

查看192.168.1.101:8081对应的tomcat的conf下的server.xml配置。

<Engine name="Catalina" defaultHost="192.168.1.101">   //这里原始配置为localhost,修改为绑定host-name

//中间采用原来的..............

<Host name="192.168.1.101"  appBase="webapps"  //这里配置ip,则此tomcat的webapps下面的资源只会通过此ip进行访问

            unpackWARs="true" autoDeploy="true">

 

        <!-- SingleSignOn valve, share authentication between web applications

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

        -->

 

        <!-- Access log processes all example.

             Documentation at: /docs/config/valve.html

             Note: The pattern used is equivalent to using pattern="common" -->

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log." suffix=".txt"

               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 

      </Host>

</Engine>

--修改后,重启tomcat后,再测试nginx访问就可以正常的访问了!

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics