文档章节

简单 nginx + tomcat6 +ueditor 集群处理

java小马哥
 java小马哥
发布于 2015/12/12 15:45
字数 1207
阅读 337
收藏 22

相对来说nginx做集群会相对比较容易一点。因此此文章才用nginx来集群项目中间有写问题处理简要说明下.新手第一次希望得到更多指点!!!

1: 工具

    nginx:代理服务器。redis:用来存储session,集群式session 共享时使用。 tomcat6,项目中使用了ueditor编辑器。一并写下。因为上传图片时需要对其处理。

2:中间使用到了ueditor 编辑器。下载最新ueditor。到项目,将lib中的包加载到项目中。

  配置文件上传:在ueditor.config.js 中配置  serverUrl: URL + "jsp/controller.jsp"即可。

  但是你可能会发现其上传的图片文件夹在tomcat里。这样会造成tomcat膨胀应发性能问题。因此有人会去修改上传方法。  

  本人比较懒没有修改或者使用第三方上传。我的方法是:

  我们会发现config.json 文件中配置了文件上传路径和图片名的名称规则。

  如: "imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */

  我们希望能配置指定绝对路径,但是很遗憾,只识别相对路径。因此我决定将imagePathFormat配置成: ../..//ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}" 使调出tomcat加载文件。但是这样tomcat就不能加载这些文件了,但是没关系我们可以在tomcat 中配置虚拟路径来加载这个文件jar。

找到server.xml 在host 便签下 添加配置

<Context  path="/ueditor"  docBase="G:/apache-tomcat-6.0.32/ueditor"  debug="0"    reloadable="true"  crossContext="true"/>

启动后通过  localhost:8080/ueditor 请求能加载ueditor下的所有文件。


3:步骤

 安装redis 此步相对简单 。对照着文档配置即可。和tomcat6 实现session 共享。需要的jar包有。

commons-pool-1.6.jar,  jedis-2.1.0.jar , tomcat-redis-session-manager-1.2-tomcat-6.jar 

(注:tomcat-redis-session-manager-1.2-tomcat-Version.jar  版本需和tomcat版本一致 )

将上述包复制到每个tomcat6 中的lib中。并在tomcat配置文件中配置。配置context.xml.  在context便签中添加

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />

<Manager className="com.radiadesign.catalina.session.RedisSessionManager"

host="localhost"  // redis 安装的服务器ip

port="6379"   // redis安装的端口

database="0"

maxInactiveInterval="1800"/> //session 时效

经此步session实现共享。

配置nginx。配置nginx.conf. 相关配置说明看文档。

配置如下

upstream 55.zh.com { 

server localhost:7005 weight=10  max_fails=2 fail_timeout=30s; 

server localhost:7006 weight=10  max_fails=2 fail_timeout=30s; 

server {

        listen       9000; //监听端口

        server_name  55.zh.com;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;

        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|xls|json)$ {  // 静态资源分离

                  root G:/upload;   //根路径

                  #expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力

                  expires      7d; 

          } 

 

          location /{

 proxy_set_header Host $host:$server_port;  //如果不配置的话可能会出现端口号丢失的情况导致无法访问。

 proxy_set_header X-Real-IP $remote_addr;

          proxy_set_header REMOTE-HOST $remote_addr;

          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 proxy_pass http://55.zhd.com;

 client_max_body_size 10m;    #允许客户端请求的最大单文件字节数

          client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,

          proxy_connect_timeout 30;  #nginx跟后端服务器连接超时时间(代理连接超时)

          proxy_send_timeout 30;        #后端服务器数据回传时间(代理发送超时)

          proxy_read_timeout 30;         #连接成功后,后端服务器响应时间(代理接收超时)

          proxy_buffer_size 128k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小

          proxy_buffers 32 128k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

          proxy_busy_buffers_size 128k;    #高负荷下缓冲大小(proxy_buffers*2)

          proxy_temp_file_write_size 128k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传

        }

 

location ~ ^/WEB-INF/ {  

           deny  all;  

        }  

}

配置完成之后 依次启动  redis --》 tomcat---》nginx。发现正常运行。

但是你会察觉有点不对。没有处理上传文件资源问题。我讲下我的处理方式:

我从别人博客里看到有几种方式: 比如使用文件同步啊,ftp 共享什么的。我采取的方式是所有的上传图片所有的文件下载预览都使用都指定一台服务器。如ueditor 的上传文件,我们从config.json 中发现所以的上传action 都是以upload 开头。所有的获取路径都是以我们配置的 localhost:8080/ueditor 这个请求来访问。那么我就可以指定一台服务器。在上述nginx.conf 配置中添加配置 :

    upstream 55.zh.com_file { //用来处理ueditor 文件上传预览

server localhost:7005 weight=10  max_fails=2 fail_timeout=30s; 

 #server localhost:7006 weight=10  max_fails=2 fail_timeout=30s; // 注释掉

    location ^upload {  //处理以upload开头的请求

proxy_pass http://55.zh.com_file;

}

location ~*/ueditor/ {  //处理ueditor的 请求

proxy_pass http://55.zh.com_file;

}

具体的表达式根据实际情况处理。




© 著作权归作者所有

java小马哥
粉丝 3
博文 7
码字总数 2694
作品 0
南京
私信 提问
加载中

评论(1)

单行道
单行道
学习
Linux下nginx+tomcat+memcached集群

集群分为横向集群和纵向集群(纵向意思就是在一台服务器上 横向就是多台服务器 就这么个意思) 一、软件版本 nginx-0.7.65 apache-tomcat-6.0.26 jdk-6u20-linux-i586-rpm.bin memcached-1....

sjfengOS
2013/04/24
3.4K
1
MSM-Memcached_Session_Manager介绍及使用

我们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,以j2ee应用为例,一般我们都会部署在tomcat下,假如我们部署了10台tomcat服务器,那这10台t...

凡尘里的一根葱
2015/11/06
68
0
浅谈web应用的负载均衡、集群、高可用(HA)解决方案

1、熟悉几个组件 1.1、apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(...

stone_
2016/05/04
363
0
浅谈web应用的负载均衡、高可用、群集

1、熟悉几个组件 1.1、apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(...

壹休哥
2016/11/06
0
0
UEditor导致的上传大文件失败

之前写过一篇 《闹心的Broken pipe》,nginx导致的请求超时,但是今天又碰到个奇葩事儿,容我喝一口82年的白开水慢慢道来 源起 项目中用到视频上传,两种上传方式,一种直接表单提交,一种内...

小尘哥
2018/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
30分钟前
1
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.1K
17
oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
3
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
聊聊DubboDefaultPropertiesEnvironmentPostProcessor

序 本文主要研究一下DubboDefaultPropertiesEnvironmentPostProcessor DubboDefaultPropertiesEnvironmentPostProcessor dubbo-spring-boot-project-2.7.3/dubbo-spring-boot-compatible/au......

go4it
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部