nginx的配置与优化

来源:互联网 发布:网眼免费空间域名绑定 编辑:程序博客网 时间:2024/05/21 11:06

在linux系统中,本文假设nginx安装在/xxx目录下

1、配置文件位于/xxx/conf/nginx.conf 。配置文件的主要结构如下,并详细讲解两种类型的虚拟主机的配置,关于什么是虚拟主机就不介绍了

        events{

             ......

         }

         http{

              server{// 用于配置虚拟主机,基于IP的虚拟主机

                     listen     192.168.0.2:80    //监听的ip和端口,可以不写IP,表示在所有IP的80端口上监听

                     server_name   192.168.0.2    //主机名称,通过servername区分不同的主机

                     access_log    logs/server1      //访问日志文件存放路径

                     location    {

                             index  index.html   index.htm   //默认首页文件,顺序从左到右

                             root     /xxx/htdocs/server1     //html页面文件存放的目录

                      }          

                }

               server{    //基于域名的虚拟主机的配置

                       listen     80    //监听的端口

                     server_name   domain.com    //主机名称

                     access_log    logs/server1      //访问日志文件存放路径

                     location    {

                             index  index.html   index.htm   //默认首页文件,顺序从左到右

                             root     /xxx/htdocs/server1     //html页面文件存放的目录

                      }  

               }

         }

2、详细介绍nginx日志文件配置与切割

    主要有两条指令与nginx日志相关,一是log_format,用于设置日志的格式,一是access_log,用于指定日志文件的存放路径、格式和缓存大小。可放在配置文件的http{  }、也可在虚拟主机之间。

 (1)  log_format的语法如下:  log_format   name   format [  format......  ]

   其中name表示定义的格式名称,format表示定义的格式的样式。

   如:log_format  mylog  ‘$remote_addr’ ' $status'    //remoteaddr用于记录实际访问的IP,status用于记录请求状态。具体的可配置的参数很多,可以查资料阅读,在此就不一一叙述了.

 (2)access_log  语法如下

       access_log  path  [ format  [ buffer=size |  off  ]   ]

      其中path表示日志存放的路径,format表示使用log_format指令设计的日志格式的名称,buffer表示设置内存缓存区的大小,如果不想使用日志,可以选择off关闭。

(3)  日志文件的切割

   在一个高仿问量的服务器中,访问日志文件增长速度非常快。需要定期对日志进行切割,可使用下面命令

    mv    日志目录/name.log  日志目录/name1.log    //mv命令将配置的日志文件name.log重命名为name1.log

    kill  -USER1  nginx主进程号       //  发送命令让nginx重新生成一个日志文件。

      可以写一个脚本让服务器定期进行日志切割。

3、nginx的压缩输出配置

   gzip压缩技术,通过压缩后,可以更快的在网络中传输,加快用户的访问速度。配置指令位于http{  ....}之间。指令如下:

       gzip   on    ;

       gzip_min_length  1k;

       gzip_buffers  4   16k;

       gzip_http_version  1.1;

       gzip_comp_level  2;

       gzip_types   text/plain  application/x-javascript  text/css  application/xml;

       gzip_vary  on;

4、nginx的浏览器本地缓存设置

     expires  [ time|epoch|max|off ]

    用于控制浏览器缓存的过期时间。

    time:  可正可负,表示当前时间加上time

   epoch:指定时间为1970年。

   max:指定时间为2037年。

  off:表示不修改expires 和cache-control的值。

   在实际中,可以针对不同类型的文件设置不同的expires,如对js文件和图片文件等很少表化的文件设置较长的expires。

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

5、LNMP 环境搭建

  本环境实在ubuntu12.04下进行的

  (1)    安装php和MySQL:

       sudo apt-get install php5-cli php5-cgi mysql-server-5.5 php5-mysql (2)   安装fastcgi       
       sudo apt-get install spawn-fcgi (3)  修改配置文件,去掉nginx.conf中下列指令前的#。       
      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 /etc/nginx/fastcgi_params;      } (4)重启nginx    kill  -HUP  nginx主进程号 ;  如果配置了系统自动启动可以执行  /etc/init.d/nginx stop (5)启动fastcgi    
       spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi    为了让php-cgi开机自启动:Ubuntu开机之后会执行/etc/rc.local文件中的脚本所以我们可以直接在/etc/rc.local中添加启动脚本。    spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi添加到语句:exit 0 前面才行。       为了测试是否安装成功可以在index.php文件中添加   <?php phpinfo(); ?>  ,以显示php的配置信息。      注意:在完成了以上配置后,运行php代码,可能会出现“no input file speciy” ,具体的错误原因是在Nginx的配置文件中,             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;     是一个写在location块(通常是匹配php)中的指令语句。    在nginx中,有三级的关系,http  >  server  >  location。    如果要在location块中使用$document_root,需要在上层server块或http块中定义了root指令,这样才能通过继承关系,    在location块中用$document_root拿到root的值。而定义在别的location块中的root指令的值,是一个局部变量,    其值无法在匹配php的这个location块中被获取。    因此,解决这个问题的办法,是把"/" location块中的root上提到server。或者,在php的location块中,重新定义root。   本文主要参考 Ubuntu 官方 wiki 的《 Nginx 的教程》以及Google,以及张宴老师的书籍《实战nginx》,在此一一感谢他们。




    

  

原创粉丝点击