存档

文章标签 ‘Nginx’

Nginx主模块-NginxHttpMainModule

2009年4月1日 没有评论

摘要:

这是Nginx的基础模块,它提供了最基本的http处理功能。

指令:

指令:daemon

语法: daemon on | off

默认值: on

例:daemon off;

在正式环境下不要使用daemon和master_process指令,这些选项只能用于开发环境。不过你可以放心的在正式环境下将daemon off和runit/daemontools一起使用,不过这种用法会在以后的升级中给给你带来麻烦,你将无法

平滑的升级到新版本。master_process off则绝对不能使用在正式环境中。

指令:env

语法: env VAR|VAR=VALUE

默认值: TZ

上下文: main

这个指令用来定义环境变量集合,如下场合需要创建新的变量或者更改变量值:

  1. 在实时环境下升级Nginx的时候
  2. 启用内置Perl 模块的时候

如果没有明确的定义TZ的值,默认情况下它集成老版本的值,默认情况下,内置的Perl模块总是可以使用TZ的值。

例:

env  MALLOC_OPTIONS;
env  PERL5LIB=/data/site/modules;
env  OPENSSL_ALLOW_PROXY_CERTS=1;

指令:debug_points

语法: debug_points [stop | abort]

默认值: none

例:

debug_points stop;
在Nginx内部有很多断言,如果debug_points的值设为stop时,那么触发断言时将停止Nginx并附加调试器。如果debug_point的值设为abort,那么触发断言时将创建内核文件。

指令:error_log

语法: error_log file [ debug | info | notice | warn | error | crit ]

默认值: ${prefix}/logs/error.log

指定服务器错误日志存储的位置。

日志中默认的错误级别:

main部分:error

HTTP部分:crit

server部分:crit

Nginx支持将不同虚拟主机的日志存储在不同位置,这是个很有特色的功能。在lighttpd中,他们一直拒绝提供类似的功能。下面两个链接,提供了针对不同虚拟主机提供不同日志的例子:

SeparateErrorLoggingPerVirtualHost

mailing list thread on separating error logging per virtual host.

如果你在编译Nginx的时候,使用了—with-debug指令,你还可以使用:

error_log LOGFILE [debug_core | debug_alloc | debug_mutex | debug_event | debug_http | debug_imap];

注意:error_log off 无法禁用日志,这个写法将会创建一个名为off的日志文件。如果要禁用日志,请用下面的写法:

error_log /dev/null crit;

指令:log_not_found

语法: log_not_found on | off

默认值: on

上下文: location

启用或者禁用404错误日志,这个指令可以用来禁止Nginx记录找不到robots.txt和favicon.ico这类文件的错误信息。

例如:

location = /robots.txt {

  log_not_found  off;

}

指令:include

语法: include file | *

默认: none

用这个指令,你可以包含任何你想要包含的配置文件。从0.4.4开始,include 指令开始支持文件名匹配,

例如:

include vhosts/*.conf;

注意:直到0.6.7版本为止,include 文件的路径是相对于configure时由–prefix=<PATH>指令指定的的路径而言,默认情况下是/usr/local/nginx.如果在编译compiledNginx时你没有指定这个值,请使用绝对路径。

从0.6.7开始,include文件的路径实现归于Nginx配置文件nginx.conf的所在目录而言,不再是nginx编译时指定的路径。这个改进大大增加了include的灵活性。

指令:lock_file

语法: lock_file file

默认值: compile-time option

例如:

lock_file  /var/log/lock_file; 
如果Nginx是由gcc、Intel C++或者SunPro C++ 在 i386、amd64平台上编译的,Nginx将采用异步互斥进行访问控制。

WordPress静态化配置之Nginx

2009年3月31日 2 条评论

路途志从开博到今天,已经走过了月余。在这一个多月的时间,参考前辈们的经验,对博客进行了大量的定制。其中比较重要的一个工作就是页面静态化—永久链接静态化。在做这个工作的时候,遇到了很大的问题,的服务器是centos5.2+nginx,而公开的资料无一例外都是基于apache的。参考了和apache的案例,经过多次试验终于在Nginx下实现了Wordpress永久链接静态化,Nginx配置文件的server部分加入下列四行:

 

#下面四行斜体字实现链接rewrite,http://www.lutuzhi.com中的所有页面实现了静态化 

rewrite ^/(index|atom|rsd)\.xml$ http://www.lutuzhi.com last;

rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;

rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;

  rewrite ^ /index.php last;

完整的server配置如下:

server
{
  listen       80;
  server_name www.lutuzhi.com lutuzhi.com *.lutuzhi.com;
  index index.html index.htm index.php;
  root  /yuluyu/wp;

  #limit_conn   crawler  20;   

  if (!-e $request_filename) {

#下面四行斜体字实现链接rewrite,http://www.lutuzhi.com中的所有页面实现了静态化 

rewrite ^/(index|atom|rsd)\.xml$ http://www.lutuzhi.com last;

rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;

rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;

rewrite ^ /index.php last;

  }
  location ~ .*\.(php|php5)?$
  {     
    #fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include fcgi.conf;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
    expires      30d;
  }

  location ~ .*\.(js|css)?$
  {
    expires      1h;
  }   

  log_format  lutuzhi  ‘$remote_addr – $remote_user [$time_local] "$request" ‘
            ‘$status $body_bytes_sent "$http_referer" ‘
            ‘"$http_user_agent" $http_x_forwarded_for’;
  access_log  /yuluyu/logs/lutuzhi.log  lutuzhi;
    }

 

Nginx配置文件更改后,用下列命令更新立即生效:

检查配置文件是否正确:/yuluyu/nginx/sbin/nginx –t
使新配置文件立即生效:kill -HUP `cat /yuluyu/nginx/nginx.pid`

错误109,管道已结束

2009年3月26日 没有评论

今天Apache2突然无法启动,报如下错误:

错误109,管道已结束。

这个问题折腾半天、改参数、重新安装wamp都无效。

怀疑是中毒了,用瑞星杀毒,依然无效。后来想起配置Nginx时也遇到过这个问题,当时是把防火墙禁用了解决了。

于是乎,禁用了瑞星的实时监控功能,实际上禁用之后依然无效。

在实时监控选项中有一个叫:自我保护,必须把这项关掉才有效。

这是瑞星杀毒软件的问题,兼容性差,把好人当坏人干掉了。

nginx,502 Bad Gateway错误

2009年3月23日 没有评论

基于nginx配置了uchome,当访问首页时报错:

502 Bad Gateway


nginx/0.7.37

在网站根目录下放了个静态的HTML页面,html页面显示正常。

可以判断问题是出在PHP模块上。

编译PHP时没仔细看提示信息,不知道有没有报错。把php完全重新编译一次后,nginx就可以正确解析php文件了。

不知道还有没有别的原因会导致nginx报 505 Bad Gateway错误。

Nginx,建站利器

2009年3月22日 没有评论

路遇交友上线快一个月了,现在看起来,当初选择Nginx作为WEB服务器是非常英明的决定。

对于个人站长来说,选用Nginx作为WEB服务器是比较好的选择,Nginx有如下优势:

1.稳定,即使它的开发版其稳定性也令我惊讶。我的网站用的是Nginx/0.7.37,这是一个开发版,上线至今从没出过问题。

2.资源占用率低,对于个人站长来说这无疑是巨大的诱惑。同样的硬件配置,Nginx服务器的性能表现远远优于apache。它基于epoll 和 kqueue 开发,在大并发的情况下占用很低的内如和CPU,这也是众多虚拟主机提供商采用它提供服务的重要原因。这条特性足以让所有对Nginx存疑的个人站长抛弃所有的疑虑,义无反顾的奔向Nginx,省钱的事谁不干?

3.配置简单,从第一次接触Nginx到配置成功,我只用了两天的时间。它的英文维基站提供了大量的例子和参考资料,可以帮助新手很快的上手。如果你能看懂俄文的话,学习起来会更方便,毕竟是俄罗斯人开发的。俄文资料才是第一手资料。

4.功能丰富,我仅仅是用Nginx做web 服务器。但是它的作用显然不仅限于此,它还可以做反向代理服务器,邮件代理服务器等。

5.更新容易,它甚至可以在不间断服务的情况先实现更新。这个太神奇了,这个功能足以让他的拥护者为之发狂。

当然,作为一个尚未成熟的开源软件,Nginx还有很多不足。比如他没有apache那么多参考资料,它更新过于频繁,
以至于一个月前用最新源代码编译的Nginx服务器,今天已经老态龙钟了。现在最新的版本是Nginx-0.7.43.


SEO Powered by Platinum SEO from Techblissonline