近年来利用Nginx和Memcached来提高站点的服务性能的作法,如一夜春风般的遍及大江南北,越来越多的门户站点和电子商务平台都採用它们来为自己的用户提供更好的服务体验。如:网易、淘宝、京东、凡客等无一不是如此。关于它们的优点,在此我不想再多言,假设您感兴趣,能够到网络上去搜索一下就可以轻松获得这方面的资料。我们今天的重点是和大家分享将Ofbiz与Nginx和Memcached配置在一起,在达到好的效果。

1)       所须要的软件

n  Tengine:这是一个经过淘宝公司优化并开源的Nginxserver,它不仅保留了Nginx的全部长处,还增加了其他一些非常好的扩展。

n  Memcached :请到官网上下载最新版本号。

n  memc-nginx和srcache-nginx:这是淘宝公司的project师开发的,用于Nginx直接存取Memcached的两个扩展。请到网上下载它最新的版本号。在baidu中搜索memc-nginx和srcache-nginx就能够非常easy找到它们。

2)        软件安装

3)        原理

增加nginx和memcached后,当nginx收到用户的请求后,仅仅有动态的内容会被转发到ofbiz的tomcat进行处理,全部的静态内容都由nginx直接处理了,大大的减少了tomcatserver和后台数据库的压力。此外,由于memcached的存在,nginx会首先到memcached中提取数据,仅仅有数据不存在时才会到磁盘上读取文件或转给tomcat进行处理,并将取得的结果数据存入memcached中,这样,当下一次再请求同样的数据时,就直接从memcached中取了。不再受磁盘IO数的限制,大大的提高了效率。

由于直接由nginx对memcached进行存取,所以不须要对ofbiz的代码进行额外的改动,配置更加灵活。

4)        配置文件

以下我们来重点看一下nginx的配置文件。须要说明的是这个配置文件里,仅仅对经常使用的了部分组件进行了配置,假设没有包括您所须要的配置部分,你能够自己依照同样的思路去加入上就可以。

#user nobody;

worker_processes  2;

daemon on;

#error_log logs/error.log;

#error_log logs/error.log  notice;

error_log logs/error.log  info;

#error_log logs/error.log  debug;

#pid        logs/nginx.pid;

events {

use epoll;

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local]"$request" '

'$status $body_bytes_sent"$http_referer" '

'"$http_user_agent""$http_x_forwarded_for"';

upstream memcache{

server 127.0.0.1:12357;

keepalive 512;

}

#

upstream ofbiz_tomcat{

server 127.0.0.1:8080;

}

#ofbiz server

server {

listen       80;

server_name _*;

#charset koi8-r;

access_log logs/ecshop.ofbiz.cn.log  main;

#处理memcached

location /memc {

internal;#仅仅同意本地訪问,提高了数据安全

memc_connect_timeout100ms;

memc_send_timeout100ms;

memc_read_timeout100ms;

set$memc_key $query_string;

memc_passmemcache;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,将动态的请求转请给tomcat

location~* /(control|products)/ {

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http://ofbiz_tomcat;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,将动态的请求转请给tomcat

location ~* \.(jsp|jspx)$

{

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http://ofbiz_tomcat;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,到磁盘读取文件给client,并存处memcached

location/ {

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

root   <OFBIZ_HOME>/baseapps/ecommerce/webapp/ecshop;

index  index.html index.htm  index.jsp default.jsp;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,到磁盘读取文件给client,并存处memcached

location  /ordermgr/{

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

root   <OFBIZ_HOME>/baseapps/order/webapp;

index  index.html index.htm   ;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,到磁盘读取文件给client,并存处memcached

location  /partymgr/{

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

root   <OFBIZ_HOME>/baseapps/party/webapp;

index  index.html index.htm   ;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,到磁盘读取文件给client,并存处memcached

location  /catalog/ {

root   <OFBIZ_HOME>/baseapps/product/webapp;

index  index.html index.htm   ;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,到磁盘读取文件给client,并存处memcached

location  /images/ {

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

root  <OFBIZ_HOME>/core/images/webapp;

index  index.html index.htm   ;

}

#依据uri和參数,在memcached中查找,假设找到就返回给client,找不到就,到磁盘读取文件给client,并存处memcached

location^~ /backend2013/ {

set $key$uri$args;

srcache_fetchGET /memc $key;

srcache_storePUT /memc $key;

root  <OFBIZ_HOME>/themes/backend2013/webapp;

index  index.html index.htm   ;

}

#redirect server error pages to the static page /50x.html

#

error_page  404 500 502 503504  /50x.html;

location = /50x.html {

root  <OFBIZ_HOME>/core/images/webapp/errorpage;

}

#禁止nginx下载ftl,xml,groovy,sh等文件,由于这些文件在ofbiz中可能是我们的程序的组成部分

location ~* \.(ftl|xml|groovy|sh)$

{

deny all;

}

#location ~* \.(gif|jpg|jpeg|png|bmp|swf)$

#{

#   expires  30d;

#}

#location~* \.(js|css)$

#{

#   expires 1h;

#}

}#end server

}

限制说明:

以上的配置,仅仅是一个初始的配置,还须要再进一步优化,比方,须要差别对待GET和POST方法的处理,不然可能会有数据无法正确更新问题,可是由于时间有限,不再细讲,欢迎大家一起讨论共同进步。

Gorun8电子商城是基于著名的开源项目OFBIZ的,并结合了中国人的使用习惯和审美观点而打造的一款适合中国人用的OFBIZ类电子商务系统。将gorun8打造成稳健、易用、高效电子商务平台。让广大企业用户能够利用gorun8以最低的成本,最快的速度开启电子商务营销之门

OFBIZ分享:利用Nginx +Memcached架设高性能的服务的更多相关文章

  1. Nginx+Tomcat+Session 高性能群集搭建

    随着IT行业的发展,linux服务器在企业中应用广泛,人们对linux上的应用服务要求也越来越高,早先的apache服务器.apache有优点也 有不足,apache渐渐不能满足人们的要求,目前ngi ...

  2. 配置集群Nginx+Memcached+Tomcat集群配置

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下配置集群 1.   Nginx Nginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebS ...

  3. 利用nginx实现负载均衡和动静分离

    1.Nginx介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 . Nginx 是由 ...

  4. 利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理

    Nginx的好处相信我不必多说了,它作为一个相当轻量级的开源Web 服务器以及反向代理服务器而深受欢迎.越来越多的公司已经对它产生兴趣,包括我们公司的许多部门,利用它进行负载均衡和资源管理,之前写过一 ...

  5. 【转】Nginx+Tomcat搭建高性能负载均衡集群

    最近对负载均衡比较感兴趣,研究了公司的负载均衡的配置,用的是阿里的SLB,相当于不用运维,只需要在后台进行简单的配置就能完成Tomcat的负载均衡,索性在网上找了几篇文章去尝试搭建一个集群,然而很多都 ...

  6. Nginx+Tomcat搭建高性能负载均衡集群

    一.       工具   nginx-1.8.0 apache-tomcat-6.0.33 二.    目标   实现高性能负载均衡的Tomcat集群: 三.    步骤   1.首先下载Nginx ...

  7. Nginx+Tomcat搭建高性能负载均衡集群(转)

    转载自:http://blog.csdn.net/wang379275614/article/details/47778201 一.       工具 nginx-1.8.0 apache-tomca ...

  8. Nginx+Memcached+Tomcat集群配置

    1.   Nginx Nginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebServer间的负载均衡,降低单个Web Server的负荷,以提高整体的性能与稳定性. 安装和 ...

  9. 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

    [编者按]本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 本文上一篇系: 利用 NGINX 最大化 ...

随机推荐

  1. The Power of Reading——英语学习小技巧之七

    This method is "The Power of Reading" and it comes from an article by Dr.Stephen Krashen. ...

  2. jQuery File Upload blueimp with struts2 简单试用

    Official Site的话随便搜索就可以去了 另外新版PHP似乎都有问题  虽然图片都可以上传  但是response报错  我下载的是8.8.7木有问题   但是8.8.7版本结合修改main. ...

  3. nginx自动切割访问日志

    Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息. 一条典型的Web访问日志 ...

  4. UNIX 缩写风格

    构建于图形界面之上的操作系统,使用鼠标作为主输入设备, 是否使用缩写并不重要.比如 Windows 系统中的目录,几乎都是全称…… 点击两次鼠标进入文件夹 pf, 并不意味着点击13次才能进入文件夹  ...

  5. IIS express 7.5 配置和多网站执行

    iis express7.5 支持xp 以上的操作系统,能够解决xp.iis的问题. 首先先下载安装iisexpress7.5地址是id=1038">点击打开链接下载完毕点击安装就可以 ...

  6. 《Android第一行代码》笔记

    学习Android开发差点儿相同有两年时间了.期间也做了大大小小的一些项目.近来抽出闲暇想把Android基础强化一下,之前在网上看到了郭霖郭大神的几篇博客.从中受益不少.于是花了近一周时间看完了郭神 ...

  7. 你喜欢SOAP吗?反正我不喜欢!

    叫什么Simple Object Access Protocol,实际上一点都不Simple! 说什么轻量级协议,从它基于XML的编码就知道它有多臃肿! 说什么跨平台特性,其实各个语言需要自己实现一整 ...

  8. 域用户允许更改IP地址

    1.在DC上设置不好使. 2.需在本地用户组里添加到network.......组里. 注意:有的时候,连接不到DC上,是由于DNS的事,需要先去掉不必要的dns地址. 添加完后,需要重启或注销. 另 ...

  9. No persister for 编译器每行执行两次的解决方法

    是前台的  js  的 datagrid 部件加了 oncheck  事件引起

  10. SSH整合,"sessionFactory " or "hibernateTemplate " is required异常

    首先遇到的问题就是HibernateDaoSupport引起的,程序中所有的DAO都继承自HibernateDaoSupport,而HibernateDaoSupport需要注入sessionfact ...