非常小众 Rotating Header Image

Nginx

在Ubuntu环境的VPS上编译Nginx-0.8.53

1. 从Nginx官方下载Nginx-0.8.53 源码

wget http://nginx.org/download/nginx-0.8.53.tar.gz

2. 准备编译环境和相关依赖的库

sudo apt-get install build-essential
sudo apt-get install libpcre3-dev
sudo apt-get install openssl
sudo apt-get install libssl-dev

3. 解压并开始编译

tar xvzf nginx-0.8.53.tar.gz
cd nginx-0.8.53
./configure
make

如果不出意外,在obj目录,可以看到nginx,运行检查版本,显示如下,

# ./nginx
# nginx version: nginx/0.8.53

在Nginx下如何实现WordPress Permalinks的Rewrite

今天把VPS上的LAMP环境更换成了LNMP(Linux+Nginx+Mysql+PHP),主要是为了 提高性能,结果发现permalinks无效了,研究了一下,结果发现是Nginx下的rewrite写法和Apache的不一样,也不是很难改,大同小异。:)

我的Permalinks是 /%category%/%postname%/

先贴一下增加的rewrite规则,

location / {
if ($http_user_agent !~ FeedBurner) {
    rewrite ^/feed/?$ http://feeds.feedburner.com/yourfeed last;
}
rewrite ^/wp-admin/$ /wp-admin/ break;
rewrite ^(.*)$ /index.php?q=$1 last;
}

对上面的rewrite规则简单说明一下,(location / 是我的WordPress的目录,如果你是其他,如/blog,/wordpress等,需要相应的修改

第一条,将WordPress的RSS,强制跳转到Feedburner的RSS。
第二条,对于管理页面的链接,不做rewrite。
第三条,将我的permalinks转成WordPress的规则。
(目前位置,似乎还可以,没有什么问题)

接下,上面的这块规则加到那里才能生效?

1. 如果你已经有了.htaccess文件,想我这样从Apache转过来的,你可以修改.htaccess. 但是你需要在nginx.conf中增加, (.htaccess被include的位置,和下面增加的位置一致即可)

include /path/to/your/.htaccess

2. 直接修改nginx.conf文件,如下

... ...
server
        {
                listen       80;
                server_name openroc.com www.openroc.com;
                index index.html index.htm index.php;
                root  /var/www;

                location / {
                     rewrite ^/feed/?$ http://feeds.feedburner.com/yourfeed last;
                     rewrite ^/wp-admin/$ /wp-admin/ break;
                     rewrite ^(.*)$ /index.php?q=$1 last;
                }

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

最后, Restart Nginx, 使新的配置生效。:)