没事搜索了下apahce nginx lighttpd 这三个web server的综合评测文章。这篇还不错转载了。

www.qq.com 腾讯   www.douban.com 豆瓣 www.xiami.com 虾米 等网站都是用的nginx了。

我这个小博客构架于vps上,web server采用nginx。

—————————————————————————————————————-

一.软件介绍(apache  lighttpd  nginx)
1. lighttpd
Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。
Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。
Fastcgi的优点在于:
· 从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.
· 从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,
· 从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)
· 从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,java,python…)

继续阅读

# wget http://nginx.org/download/nginx-0.8.32.tar.gz

下载了最新的工程版nginx,个人vps了。一直用的最新的呵~

# tar zxvf nginx-0.8.32.tar.gz

解压

# cd nginx-0.8.32

进入解压后的目录
# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

按照你以前自己配置的参数执行./configure。以上是自己的配置参数

# make

make编译下,这里就不要install了。

继续阅读

刚刚在godaddy申请了新域名 www.iamle.com. 原有的www.iamle.cn域名决定废弃了.

我的这个博客跑在 Linux + mysql + nginx +php + WordPress 环境下. 为了更好的支持搜索引擎.绝对把www.iamle.cn全部的连接 301永久重定向到新域名 www.iamle.com下.

nginx配置中增加 www.iamle.com域名(下面的nginx配置未全部贴上.)

————————

listen 80;
server_name www.iamle.com iamle.com www.iamle.com iamle.cn;

————————

原来针对www.iamle.cn做的301规则

继续阅读

问题概述:

           nginx,咱也来赶赶新潮.给linux服务器配上nginx.

装上WordPress.鉴于WordPress不是太理想的速度.采用了"cos-html-cahce"这一个优秀国产插件. 问题也就来了. "cos-html-cahce"并没正常工作. 现象为只生产首页.文章的html不生成.

排除了目录写权限的因素.还是找不出原因.

解决办法:

      谷歌 百度一番后找到了方法.  导致这个问题的原因是 cos-html-chace没正确获得网站目录的路径.找到问题了解决办法也就迎刃而解了.

1、打开你该网站的 nginx 的 conf 配置文件.  winscp 或者 命令行模式vi都行。

2、找到配置php支持的一段。

        location ~ .*\.(php|php5)?$
            {
                fastcgi_pass  unix:/tmp/php-cgi.sock;
                #fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include fcgi.conf;
            }

3、在大括号中间增加粉红色的语句。就是给php指定网站目录了。

    比如你的网站目录为  /home/xxx/public_html  那就加 root /home/xxx/public_html;

    如下是我的配置:

        location ~ .*\.(php|php5)?$
            {

                root  /home/wwwroot/wwekblog;
                fastcgi_pass  unix:/tmp/php-cgi.sock;
                #fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include fcgi.conf;
            }

测试思考:

         测试结果 cos-html-cache 正常工作. 文章的html文件正常生成.  导致这个故障的原因可能是nginx并没有把网站目录的"属性"传递给fast cgi工作的php. 导致cos-html-cahce没获得正确的网站目录路径.  其实解决这个问题的方法还有一个,就是cos-html-cache官方说明的改这个插件的网站目录获得语句,给它手动指定.这样也可以.  

  

    问题:

在几个blog程序中折腾的结果~ 

导致url连续二次变化。这是第三次了。 

nginx 通过rewrite 使用 “permanent;”参数 成301永久url重定向。 

以往的url结构 

https://www.iamle.com/post/199/ 

现在需要的url结构 

https://www.iamle.com/archives/199.html 

    过程:

学习nginx的配置规则,学习正则表达式(我也没接触过,学呗。) 

nginx的中文维科:http://wiki.nginx.org/NginxChs 

正则表达式入门:http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F 

                http://deerchao.net/tutorials/regex/regex.htm 

    简单说明下(认真学习正则表达式-我没认真学^_^): 

^ 表示 匹配字符串的开始. 

$ 表示 匹配字符串的结束. 

$1 $2 表示变量 

([0-9]+) 表示至少1个、最多不限制的数字串. 

头看晕了(不是程序员。)。写出表达式。 

—————————————————- 

—————————————————- 

[sourcecode language=”css”]
rewrite ^/post/([0-9]+)/$ /archives/$1.html permanent;
rewrite ^/html/y2009/([0-9]+).html$ /archives/$1.html permanent;
[/sourcecode]

  

把表达式加入nginx conf 文件。 

—————————————————– 

location / {  

放这里。 

—————————————————- 

       完成配置:

这是我的完整的WordPress nginx rewrite 规则配置。 

1、nginx rewrite网址url变更301重定向。 

2、nginx rewrite iamle.cn 重定向到 www.iamle.com 。 

3、nginx WordPress rewrite伪静态规则(得以支持WordPress的自定义url)。 

[sourcecode language=”php”]
location / {
                  rewrite ^/post/([0-9]+)/$ /archives/$1.html permanent;
                  rewrite ^/html/y2009/([0-9]+).html$ /archives/$1.html permanent;
            if ($host !~ "^www\.iamle\.com$"){
                  rewrite ^(.*)  https://www.iamle.com$1 permanent;
                                             }
            if (-f $request_filename/index.html){
                  rewrite (.*) $1/index.html break;
                                                }
            if (-f $request_filename/index.php){
                  rewrite (.*) $1/index.php;
                                                }
            if (!-f $request_filename){
                  rewrite (.*) /index.php;
                                      }
                    } 
[/sourcecode]

  

        测试结果:

访问:https://www.iamle.com/post/199/ 即可被跳转到 https://www.iamle.com/archives/199.html

1、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
/usr/local/nginx/sbin/nginx -t

如果屏幕显示以下两行信息,说明配置文件正确:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully

2、这时,输入以下命令查看Nginx主进程号:
ps -ef | grep “nginx: master process” | grep -v “grep” | awk -F ‘ ‘ ‘{print $2}’

屏幕显示的即为Nginx主进程号,例如:
6302
这时,执行以下命令即可使修改过的Nginx配置文件生效:
kill -HUP 6302

或者无需这么麻烦,找到Nginx的Pid文件:
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

注意这里的 ` 是英文状态下的 漂号 也就是 tab键上面哪个。