当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪实例学习nginx的cache功能      实例学习nginx的cache功能,供大家学习参考。 一.nginx的proxy_cache模块,据说比squid对多核的支持好很多。   代码如下:    #所需软件:    wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz    pcr.........
    ▪如何让nginx只缓存静态文件      在实际的网站配置中,可能会遇到只允许nginx缓存静态文件的情况,下面的配置文件,供大家参考。   代码如下:  server {     listen          80;     server_name     Domain.com;     #.........
    ▪命令行安装与配置Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator的教程      命令行安装与配置Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator的教程,有需要的朋友可以参考下。 1、安装ubuntu server 10.04或10.10,其中安装语言选的en,时区shanghai,服务只安装ssh,其他全部用默认就行。 .........

[1]实例学习nginx的cache功能
    来源: 互联网  发布时间: 2013-12-24

实例学习nginx的cache功能,供大家学习参考。

一.nginx的proxy_cache模块,据说比squid对多核的支持好很多。
 

代码如下:
   #所需软件:
   wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz
   pcre,nginx-0.8.29.tar.gz
   # purge模块
   http://labs.frickle.com/nginx_ngx_cache_purge/
  
   #安装
   tar -zxvf ngx_cache_purge-1.0.tar.gz
   tar -zxvf nginx-0.8.29.tar.gz
   cd nginx-0.8.29
   ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0
   --prefix=/usr/local/gp/nginx --with-http_stub_status_module
   --with-http_ssl_module
   make && make install


 
二.配置
   1.创建缓存目录,路径同一分区下
   

代码如下:
  mkdir -p /data0/proxy_temp_path
     mkdir -p /data0/proxy_cache_path


    
   2.proxy_temp这个目录用于存储临时文件,默认在nginx下.需要看下是否www有权限写入,
     如果不可写,无法在这个目录生成文件的话,会导致反向代理失败。也可以在
     nginx的配置里设置proxy_temp_path指定存储临时文件的目录。
   3.proxy_cache_path
    

代码如下:
/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m
     inactive=1d max_size=500m;
 

     levels设置目录层次
     keys_zone设置缓存空间名字和共享内存大小(热点内容放在内存)
     inactive在指定时间内没人访问则被删除在这里是1天
     max_size最大缓存空间
   
     所有active的key和元数据都保存在共享内存中-缓存区域(zone),
     在keys_zone中定义该缓存区域的名字和大小.

三.nginx.conf 只写关键步骤
  

代码如下:

  # 日志格式设置命中状态有HIT,EXPIRED
     $upstream_cache_status
    # 据说先写到temp再移动到cache
    proxy_temp_path /data0/proxy_temp_path;
    proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m
    inactive=10m max_size=500m;

    upstream my_server_pool {
      server 115.79.90.78:80;
    }
  
        server
    {
        listen 80;
        server_name file.51yuncai.com;
        location /
        {
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_pass http://my_server_pool;
        }

    # 设置缓存的文件类型,建议在后端设置缓存时间通过expires cache-control:max-age=[ses]
    location ~ .*\.(gif|jpg|png|bmp|swf|js|css)$
        {
         proxy_cache cache_one;
       
     # 在cache端强制设置缓存时间
         proxy_cache_valid 200 304 12h;
         proxy_cache_valid 301 302 1m;
         proxy_cache_valid any 1m;

         proxy_cache_key $host$uri$is_args$args;

         #####
         add_header X-Cache $upstream_cache_status;
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_pass http://my_server_pool;
        }

        location ~ /purge(/.*)
         {
          allow 127.0.0.1;
          allow 192.168.1.0/24;
          deny all;
          proxy_cache_purge cache_one $host$1$is_args$args;
         }
      }

四.测试
   访问 http://xxxx/logo.jpg

   命中率:
   

代码如下:
#!/bin/bash
    # author:gupeng
    # proxy_cache hit rate
    if [ "$1" != '' ];then
        if [ -e "$1" ];then
            HIT=`cat $1 | grep HIT | wc -l`
            ALL=`cat $1 | wc -l`
            Hit_rate=`echo "scale=2;($HIT/$ALL)*100" | bc`
            echo "Hit rate=$Hit_rate%"
        else
            echo "$1 not exsist!"
        fi
    else
        echo "usage: ./hit_rate.sh file_path"
    fi

五、命中状态说明
    $upstream_cache_status
    Appeared in 0.8.3. Possible values:

    ·MISS
    ·EXPIRED - expired, request was passed to backend 请求被传送到后端
    ·UPDATING - expired, stale response was used due to proxy/fastcgi_cache_use_stale

updating 正在更新,将使用旧的应答
    ·STALE - expired, stale response was used due to proxy/fastcgi_cache_use_stale
    后端将得到过期的应答
    ·HIT


    
[2]如何让nginx只缓存静态文件
    来源: 互联网  发布时间: 2013-12-24

在实际的网站配置中,可能会遇到只允许nginx缓存静态文件的情况,下面的配置文件,供大家参考。
 

代码如下:

 server
{
    listen          80;
    server_name     Domain.com;     #碰到域名为Domain的  就交给Apache来运行

    location / {
             proxy_pass     http://Domain.com:8080/;        #我的Apache上面的站点即为http://k:8080
     }

    location ~ .*\.(js|css)$ {        #指定缓存文件类型
          expires 7d;      #设置浏览器过期时间
          root a;                   #所有的缓存文件都会保存在这里,并会缓存文件夹,不用担心覆盖,要注意时效性,如果做了修改的文件依旧读取缓存,是很不爽的 proxy_store on;        #开启缓存机制
          proxy_store_access user:rw group:rw all:rw;       #缓存读写规则
          proxy_temp_path b;            #存放静态文件的缓存目录
          #include proxy.conf;          # 外联proxy理的详细配置如proxy_set_header, client_max_body_size ....
          if ( !-e $request_filename) {  
  proxy_pass  http://Domain.com:8080;
             }
         }      
     }


    
[3]命令行安装与配置Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator的教程
    来源: 互联网  发布时间: 2013-12-24

命令行安装与配置Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator的教程,有需要的朋友可以参考下。

1、安装ubuntu server 10.04或10.10,其中安装语言选的en,时区shanghai,服务只安装ssh,其他全部用默认就行。
提示:以上安装过程完成后,建议用其他计算机登录服务器,windows系统可以用putty,linux系统直接在终端用命令就可以:

代码:
ssh 登录名@服务器ip

因为以下过程得输入大量命令和代码,在客户机上直接粘贴即可(在windows下的putty中单击右键即可把剪贴板中的内容粘贴到终端)。

2、添加源:
sudo vi /etc/apt/sources.list

lucid(10.04)的源添加如下:
 

代码如下:
deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main
deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main

maverick(10.10)的源:
 

代码如下:
deb http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse
deb http://ppa.launchpad.net/nginx/stable/ubuntu maverick main

最后一行为nginx的ppa源,需要添加key,在终端运行:
sudo apt-key adv --keyserver keyserver.Ubuntu.com --recv-keys C300EE8C

3、更新
sudo apt-get update

4、安装网站系统
 

代码如下:
sudo apt-get install nginx php5-common php5-dev php5-cgi php5-fpm php-apc php5-mysql php5-curl php5-gd php5-idn php-pear php5-mcrypt php5-memcache php5-ming php5-recode php5-tidy php5-xmlrpc php5-xsl mysql-server

上面为必选安装,以下php组件为可选安装,一般网站程序可能用不着:
 

代码如下:
sudo apt-get install php5-imagick php5-imap php5-recode php5-snmp php5-sqlite php5-xmlrpc php5-suhosin php5-odbc php5-ladp

5、修改nginx配置文件
sudo vi /etc/nginx/sites-enabled/default

把其中的:
 

代码如下:
location / {
root /var/www;
index index.html index.htm;
}

改为:
 

代码如下:
location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}

其中的:
 

代码如下:
#location ~ \.php$ {
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# include fastcgi_params;
#}

改为:
 

代码如下:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}

6、更改网站目录权属:
sudo chown -R ubuntu nginx-default/

注:其中的ubuntu为系统登录用户名。

7、安装ZendGuardLoader及eaccelerator:
 

代码如下:
sudo mkdir /usr/zend
mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
wget http://phpcj.googlecode.com/files/ZendGuardLoader.so
sudo mv ZendGuardLoader.so /usr/zend/ZendGuardLoader.so
wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
cp control.php /var/www/nginx-default/control.php //复制控制程序到网站目录,通过http://网站名/control.php访问,默认帐号为admin,密码为eAccelertor,可编辑此文件修改。
phpize
sudo ./configure --enable-eaccelerator=shared
sudo make
sudo make install
sudo vi /etc/php5/fpm/php.ini

在配置文件最后加上:
 

代码如下:
zend_extension=/usr/zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension="/usr/lib/php5/20090626+lfs/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.allowed_admin_path="/var/www/nginx-default/control.php"

8、(可选步骤)安装phpmyadmin:
 

代码如下:
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.9/phpMyAdmin-3.3.9-all-languages.tar.bz2
tar xvjf phpMyAdmin-3.3.9-all-languages.tar.bz2
mv phpMyAdmin-3.3.9-all-languages /var/www/nginx-default/phpmyadmin
cd /var/www/nginx-default/phpmyadmin
cp config.sample.inc.php config.inc.php
 

vi config.inc.php

将其中的:
$cfg['blowfish_secret'] = '';
修改为:
$cfg['blowfish_secret'] = 'web';

下面的:
 

代码如下:
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma_relation';
// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
// $cfg['Servers'][$i]['history'] = 'pma_history';
// $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

将//全部删除,然后将其中的:
 

代码如下:
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

pma和pmapass修改为你的mysql用户名和密码,最后登录phpmyadmin,将phpmyadmin/scripts目录中的creat_tables.sql文件导入mysql。

9、重启系统、上传文件,网站建立成功。
文件上传建议用filezilla(http://filezilla-project.org/),免费的开源ftp软件,windows和linux都可以用,支持ssh的22端口。

附:系统及部分软件管理操作
1、操作系统:
 

代码如下:
sudo reboot now //重启系统
sudo halt //关闭系统

2、nginx配置修改及生效:
 

代码如下:
sudo vi /etc/nginx/nginx.conf //修改配置
sudo vi /etc/nginx/sites-enabled/default //修改配置
sudo service nginx restart //重启nginx

3、php配置修改及生效:
 

代码如下:
sudo vi /etc/php5/fpm/php.ini //修改配置
sudo service php5-fpm restart //重启fastcgi进程

3、网站目录:
/var/www/nginx-default

4、eaccelerator管理:
http://你的网站/control.php

5、修复nginx+php出现的重大漏洞、修改上传文件大小(可以看你自己的情况)
 

代码如下:
sudo vi /etc/php5/fpm/php.ini
cgi.fix_pathinfo = 0 //修复漏洞
upload_max_filesize = 2M改为5M //修改上传文件大小

6、设定防火墙
 

代码如下:
sudo ufw enable
sudo ufw default deny
sudo ufw allow 80
sudo ufw allow 22

7、启动php5-fpm时,出现:
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/fpm/conf.d/ming.ini on line 1 in Unknown on line 0
[WARNING] [pool www] pm.start_servers is not set. It's been set to 20.
的提示,第一行的原因是在配置文件中已用;代替#来进行注释。修改以下文件:
vi /etc/php5/fpm/conf.d/ming.ini
将#改为;即可。
第二行原因是/etc/php5/fpm/pool.d/www.conf配置文件中:
;pm.start_servers = 20
去掉前面的;即可。

8、Discuz后台启动 URL静态化,会提示 404 Not Found的解决办法:
在niginx中开启Rewrite,在服务器配置文件nignx.conf中写入以下内容,然后重启nginx。
rewrite ^/archiver/((fid|tid)-[w-]+.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+).html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+).html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+).html$ /tag.php?name=$1 last;
break;

以下内容来自:http://www.vpsee.com/2011/04/some-nginx-rewrite-examples-for-subdirectories/,未测试。
Discuz! 7.2 安装在子目录 /bbs 下:
 

代码如下:
rewrite ^/bbs/archiver/((fid|tid)-[\w\-]+\.html)$ /bbs/archiver/index.php?$1 last;
rewrite ^/bbs/forum-([0-9]+)-([0-9]+)\.html$ /bbs/forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/bbs/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /bbs/viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/bbs/space-(username|uid)-(.+)\.html$ /bbs/space.php?$1=$2 last;
rewrite ^/bbs/tag-(.+)\.html$ /bbs/tag.php?name=$1 last;

Discuz! X1.5 安装在子目录 /bbs 下:
 

代码如下:
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/([a-z]+)-(.+)\.html$ $1/$2.php?rewrite=$3 last;
if (!-e $request_filename) {
return 404;
}

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3