近年来利用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. C++之类与对象(1)

    下个阶段,我将讲解C++中面向对象的部分,也是C++对C语言改进的最重要的部分.以前C++也被叫做是"带类的C".今天主要讲类的构成,成员函数以及对象的定义和使用. 1.其实这一节 ...

  2. BZOJ 1782: [Usaco2010 Feb]slowdown 慢慢游( BIT + dfs )

    orz...hzwer 对着大神的 code 看 , 稍微理解了. 考虑一只牛到达 , 那它所在子树全部 +1 , 可以用BIT维护 --------------------------------- ...

  3. linux分区工具fdisk的使用

    fdisk是linux下的一块分区工具,使用简单方便,由于是对系统进行修改,需要root权限. 常用参数如下: fdisk  -l : 列出所有的硬盘信息 直接传入设备名称可进入对该硬盘分区.例如,f ...

  4. Regex阅读笔记(一)之入门

    在检查一行文本时,^代表一行的开始,$代表结束. 字符数组:[],在里面列举任意多个字符,可以匹配其中任意一个字符,字符组元字符'-'表示一个范围. ^$表示一个空行(没有任何字符,包括空白字符) [ ...

  5. ubuntu ~/.bash_history

    sudo apt-get update sudo apt-get install python-pip sudo pip install Django==1.7.1 sudo apt-get inst ...

  6. mongoDB初接触

    首先去官网http://www.mongodb.org/ 下载mongoDB 下载后解压D:\mongodb 创建两个新文件夹data以及log 新建一个文件命名为mongodb.cfg dbpath ...

  7. glib 文档 代码 索引 编译

    ./configure --prefix=/opt/glib-2.28.8 --enable-staticmakemake install linux下载 WIN32下载 代码索引 文档索引 GLib ...

  8. mysqld守护进程

    1.安装方式:安装文件:可执行的二进制文件: 源代码编译. 2.版本选择:常见版本区别:GA(一般应用,尽量使用最新版本)/RC(候选发布版本)/测试版本实版本选择主要是够用.适用.好用!不一定是最新 ...

  9. 什么是AOI自动光学检测机测试技术

    前言 当印刷电路板的价格以每年六到八个百分点的速度持续滑落,产品的生产良率就成为维持产业竞争力的要素.要获得高的良品率需要有良好的制造控制能力,而要获得良好的制程控制,似乎就必须要在各个制程中执行良好 ...

  10. Windows Phone 8初学者开发—第8部分:理解编译和部署

    原文 Windows Phone 8初学者开发—第8部分:理解编译和部署 第8部分:理解编译和部署 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...