当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪使用nginx的fastcgi cache提高网站的php访问速度      使用nginx的fastcgi cache提高网站的php访问速度,有需要的朋友不妨参考下。 ab测试:   代码如下: bin\ab.exe -n 100 -c 5 http://www. 未使用 Concurrency Level:      5 Time taken for tests:   9.016 seconds Compl.........
    ▪有关nginx中URL自动加斜杠的问题      我们的内部服务器使用nginx,做网站测试之用。不同域名使用端口号区分,如www用默认的80端口,其它域名用81,82... 有时直接在地址栏敲网址,会出现跳转到localhost.localdomain的情况。 比如858端.........
    ▪nginx试用小记      由于之前一直在用apache+mysql+php,因此这次没装mysql和那些libmcrypt等库以及php的扩展模块。 php的安装配置参数: ./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-.........

[1]使用nginx的fastcgi cache提高网站的php访问速度
    来源: 互联网  发布时间: 2013-12-24

使用nginx的fastcgi cache提高网站的php访问速度,有需要的朋友不妨参考下。

ab测试:
 

代码如下:
bin\ab.exe -n 100 -c 5 http://www.

未使用
Concurrency Level:      5
Time taken for tests:   9.016 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      1696500 bytes
HTML transferred:       1669000 bytes
Requests per second:    11.09 [#/sec] (mean)
Time per request:       450.781 [ms] (mean)
Time per request:       90.156 [ms] (mean, across all concurrent requests)
Transfer rate:          183.76 [Kbytes/sec] received

日志里显示,页面执行需要0.004s
Concurrency Level:      5
Time taken for tests:   3.203 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      1685400 bytes
HTML transferred:       1669000 bytes
Requests per second:    31.22 [#/sec] (mean)
Time per request:       160.156 [ms] (mean)
Time per request:       32.031 [ms] (mean, across all concurrent requests)
Transfer rate:          513.84 [Kbytes/sec] received

日志里显示,页面执行时间为0s

提高的很明显!

配置主要参考:http://www./article/5166.html

配置参数:
http里:
 

代码如下:
fastcgi_cache_path /www/php_cache  levels=1:2  keys_zone=cache_php:30m inactive=1d max_size=10g;

server里:
  

代码如下:
  location ~ .*\.php?$
    {
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;
      #以下是fastcgi_cache的配置
      fastcgi_cache   cache_php;
      fastcgi_cache_valid   200 302  1h;
      fastcgi_cache_min_uses  1;
      fastcgi_cache_use_stale error  timeout invalid_header http_500;
      fastcgi_cache_key $host$request_uri;
    }

fastcgi_cache_path:fastcgi_cache缓存目录,可以设置目录层级,比如1:2会生成16*256个字目录,cache_php是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),inactive表示默认失效时间,max_size表示最多用多少硬盘空间。本来还有个fastcgi_temp_path参数,但发现似乎没用。

fastcgi_cache_valid:定义哪些http头要缓存
fastcgi_cache_min_uses:URL经过多少次请求将被缓存
fastcgi_cache_use_stale:定义哪些情况下用过期缓存
fastcgi_cache_key:定义fastcgi_cache的key,示例中就以请求的URI作为缓存的key,Nginx会取这个key的md5作为缓存文件,如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录
fastcgi_cache:用哪个缓存空间

指定删除某一URL的php文件的缓存的PHP程序
大致如下:
 

代码如下:

$md5 = md5($url);
$cacheFile = '/www/php_cache/' . substr($md5, -1, 1) . '/' . substr($md5, -3, 2) . '/' . $md5;

if (!file_exists($cacheFile)) {
    exit('缓存不存在。');
}

if (@unlink($cacheFile)) {
    echo '清除缓存成功。';
} else {
    echo '清除缓存失败。';
}


    
[2]有关nginx中URL自动加斜杠的问题
    来源: 互联网  发布时间: 2013-12-24

我们的内部服务器使用nginx,做网站测试之用。不同域名使用端口号区分,如www用默认的80端口,其它域名用81,82...
有时直接在地址栏敲网址,会出现跳转到localhost.localdomain的情况。

比如858端口下有个hx目录,这样正常访问:http://192.168.8.58:858/hx/
但如果少打了一个/,如:http://192.168.8.58:858/hx,则会自动跳转到:http://localhost.localdomain:858/hx/。

估计应该是和nginx自动加斜杠的问题相关,试了下,果然如此。

在某些情况下(具体可参考 wiki.nginx.org),Nginx 内部重定向规则会被启动,例如,当 URL 指向一个目录并且在最后没有包含“/”时,Nginx 内部会自动的做一个 301 重定向,这时会有两种情况:
1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。
参考:http://www./article/5168.html

引用
If server_name_in_redirect is on, then Nginx will use the first value of the server_name directive for redirects. If server_name_in_redirect is off, then nginx will use the requested Host header.
来自官方文档

原配置,没有加server_name:
 

代码如下:
server {
    listen  858;
}

修改后:
 

代码如下:
server {
    listen  858;
    server_name 192.168.8.58;
}
或:
server {
    listen  858;
    server_name_in_redirect off;
}

此问题解决。访问http://192.168.8.58:858/hx可以正常跳转到http://192.168.8.58:858/hx/了。

分析:服务器的hostname是localhost.localdomain,当没有设置server_name时,server_name就变成hostname了。
默认又是server_name_in_redirect on,因此原配置访问hx目录时,会重定向到localhost.localdomain/hx/了。
第一种修改方法,加了server_name,那就跳转到server_name + 目录名 + /,对了。
第二种修改访问,重定向为:访问的URL+目录名+/,也对了。

另,如果使用了范解析,一般会这个配置:
 

代码如下:
server{
    listen 80;
    server_name _;
}
 

如果有个phpcheck目录,有人不小心链了http://www./phpcheck这样一个链接,就会重定向到http://_/phpcheck/。
所以这种在没法指定server_name的情况下,要加上server_name_in_redirect off。
 

代码如下:
server{
    listen 80;
    server_name _;
    server_name_in_redirect off;
}
 

这时,访问www./phpcheck,就会自动并且正确的跳转到www./phpcheck/了。

附:晚上升级一台服务器的nginx版本时,在changes里看到:
Changes with nginx 0.8.48     03 Aug 2010

    *) Change: now the "server_name" directive default value is an empty
       name "".
       Thanks to Gena Makhomed.

    *) Change: now the "server_name_in_redirect" directive default value is
       "off".
自nginx 0.8.48起server_name_in_redirect已默认为off,无需指定。


    
[3]nginx试用小记
    来源: 互联网  发布时间: 2013-12-24

由于之前一直在用apache+mysql+php,因此这次没装mysql和那些libmcrypt等库以及php的扩展模块。

php的安装配置参数:
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-gd --enable-gd-native-ttf --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear

只碰到了启动php-cgi进程时:
Starting php_fpm /usr/local/webserver/php/bin/php-cgi: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
failed

在/usr/local/lib下可以找到libiconv.so.2 。
解决:
在/etc/ld.so.conf中加一行/usr/local/lib,运行ldconfig
/usr/local/webserver/php/sbin/php-fpm start
Starting php_fpm  done

nginx的配置文件端口改成81,写了个phpinfo,测试成功。

把原有站点移到nginx中,在81端口都测试正常后,停掉apache,改为80端口启动,基本上都正常。

转移配置文件要注意以下几点:

1.Rewrite的写法略有不同:
Apache是RewriteRule ^hx_(.*).html$ /hx.php?id=$1 [L]
有种偷懒的办法就是把前面用双引号引起来
nginx则为rewrite "^hx_(.*).html$" /hx.php?id=$1 last;
不然不加双引号的话总是提示出错:
[emerg]: directive "rewrite" is not terminated by ";" in /usr/local/webserver/nginx/conf/nginx.conf:84
configuration file /usr/local/webserver/nginx/conf/nginx.conf test failed

2.要把用户和用户组改成www。chown -R www:www 网站目录

3.多个域名直接跟在主域名后即可。
如server_name  www. ;

4.如果需要域名泛解析到这个主机,用下划线_来表示
server_name  _


    
最新技术文章:
▪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脚本break和continue命令简明教程 iis7站长之家
▪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