Nginx方向代理tomcat 访问速度慢

对于测试环境中,只使用1个tomcat作为服务器,所以这个tomcat中有很多的项目。。。  大概有十几个的样子,所以,每次重启tomcat的速度是真的很慢很慢, 但是,测试服务器没有权限去打开安全组,所以也只有仅有的80端口暴露,可以使用。于是下面的解决方案就出来了,使用Nginx方向代理多个tomcat,然后通过将项目放在不同的tomcat中,这样就可以将项目分开,每次重启一个tomcat既不影响一部分项目,另外一台重启的速度也很快,so good!

  1.   下载nginx   

     下载地址:  http://nginx.org/en/download.html

        测试服务器是windows server, 所以下载 nginx/windows-1.x  即可。 如果是linux,同理,直接下载nginx-1.x 即可。

     2. 安装

       win 安装nginx非常简单,解压,然后放在一个目录下面就可以了

     3. 启动和停止

        先进入到nginx/

       启动: start nginx  (也可以直接点击nginx.exe启动),不要以为黑窗口一闪就关掉是没有启动成功,实际是启动了的.

         可以通过任务管理器查看是否有这个进程就可以看到是否启动,或者看log就可以

       停止:  nginx -s stop 

      重新加载配置文件:   如果在启动之后,对配置文件进行了修改,不用重新启动,直接使用 nginx -s reload 即可加载配置文件。

   4.  配置映射到不同端口的tomcat: 

server { 
    listen       81; 
    # 此处server_name 即需要映射的服务器的域名,如果是和nginx同一个服务器即localhost
    server_name  localhost; 

    # 默认有一个访问的index页面
    location / {
         root /home/sthree/html;
         index index.html; 
    }
        
    # 配置映射到8080端口的tomcat, 这个 /two即tomcat/webapps/  下的项目名称,如果有多个,配置多个这个样的节点即可
    location /one {
               proxy_pass localhost:8080;
               proxy_set_header           Host $host;
               proxy_set_header  X-Real-IP  $remote_addr;
               proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
               index  index.html index.htm; 
     }

     # 配置映射到8090端口的tomcat      
     location /two {
               proxy_pass localhost:8090;
               proxy_set_header           Host $host;
               proxy_set_header  X-Real-IP  $remote_addr;
               proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
               index  index.html index.htm; 
     }

}

       然后就可以直接通过域名访问,nginx通过节点,转发到不同的tomcat就可以了~

     例如你访问:  wwww.aaa.com/one/index.do     nginx就会通过上面配置的 localtion /one{}   代理到访问该服务器中localhost:8080/one 的访问。

 

   5. 最后,还有一个问题,就是配好了之后,但是访问的速度很慢很慢,非常慢,需要在nignx.conf中加上下面一段配置即可,立马见效: 

client_max_body_size 1000m;
proxy_connect_timeout 1;
proxy_send_timeout 30;
proxy_read_timeout 60;

    

...
    location /one {
               proxy_pass localhost:8080;
               proxy_set_header           Host $host;
               proxy_set_header  X-Real-IP  $remote_addr;
               proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
               index  index.html index.htm; 
                
                client_max_body_size 1000m;
                proxy_connect_timeout 1;
                proxy_send_timeout 30;
                proxy_read_timeout 60;


     }

...

  6.  因为使用了nginx来进行转发,所以tomcat之前的端口为80的配置文件就没有使用了,在调试接口的时候,突然发现 接口接收到的中文居然都是乱码,不应该呀!

      然后就重新配置了nginx的配置文件,结果还是乱码,然后进行查询,最后发现,还是需要配置一下tomcat的server.xml,才可以,奇怪,明明已经在代码中对接收到的参数进行了转码的操作,居然还需要在tomcat中配置,有点不明白...   后面再研究一下下

    中文参数乱码的配置:

       nginx:  在nginx.conf文件中配置:

           server {
                   listen       80;
                   server_name  localhost;
                   charset utf-8;
           }

        tomcat:  server.xml中配置:

                          connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

 

 

 

  

你可能感兴趣的:(服务器相关)