nginx配置文件说明.docx

上传人:b****5 文档编号:5654421 上传时间:2022-12-30 格式:DOCX 页数:9 大小:20.51KB
下载 相关 举报
nginx配置文件说明.docx_第1页
第1页 / 共9页
nginx配置文件说明.docx_第2页
第2页 / 共9页
nginx配置文件说明.docx_第3页
第3页 / 共9页
nginx配置文件说明.docx_第4页
第4页 / 共9页
nginx配置文件说明.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

nginx配置文件说明.docx

《nginx配置文件说明.docx》由会员分享,可在线阅读,更多相关《nginx配置文件说明.docx(9页珍藏版)》请在冰豆网上搜索。

nginx配置文件说明.docx

nginx配置文件说明

Apache服务器和nginx的优缺点:

我们之前大量使用Apache来作为HTTPServer。

Apache具有很优秀的性能,而且通过模块可以提供各种丰富的功能。

1)首先Apache对客户端的响应是支持并发的,运行httpd这个daemon进程之后,它会同时产生多个孩子进程/线程,每个孩子进程/线程分别对客户端的请求进行响应;

2)另外,Apache可以提供静态和动态的服务,例如对于PHP的解析不是通过性能较差的CGI实现的而是通过支持PHP的模块来实现的(通常为mod_php5,或者叫做apxs2)。

3)缺点:

因此通常称为Apache的这种Server为process-basedserver,也就是基于多进程的HTTPServer,因为它需要对每个用户请求创建一个孩子进程/线程进行响应;

这样的缺点是,如果并发的请求非常多(这在大型门户网站是很常见的)就会需要非常多的线程,从而占用极多的系统资源CPU和内存。

因此对于并发处理不是Apache的强项。

4)解决方法:

目前来说出现了另一种WebServer,在并发方面表现更加优越,叫做asynchronousservers异步服务器。

最有名的为Nginx和Lighttpd。

所谓的异步服务器是事件驱动程序模式的event-driven,除了用户的并发请求通常只需要一个单一的或者几个线程。

因此占用系统资源就非常少。

这几种又被称为lightweightwebserver。

举例,对于10,000的并发连接请求,nginx可能仅仅使用几M的内存;而Apache可能需要使用几百M的内存资源。

2.实际中单一的使用:

1)关于单一使用Apache来作为HTTPServer的情况我们不用再多做介绍,非常常见的应用;

上面我们介绍到Apache对于PHP等服务器端脚本的支持是通过自己的模块来实现的,而且性能优越。

2)我们同样可以单单使用nginx或者lighttpd来作为HTTPServer来使用。

nginx和lighttpd和Apache类似都通过各种模块可以对服务器的功能进行丰富的扩展,同样都是通过conf配置文件对各种选项进行配置。

对于PHP等,nginx和lighttpd都没有内置的模块来对PHP进行支持,而是通过FastCGI来支持的。

Lighttpd通过模块可以提供CGI,FastCGI和SCGI等服务,LighttpdiscapableofautomaticallyspawningFastCGIbackendsaswellasusingexternallyspawnedprocesses.

nginx则没有自己提供处理PHP的功能,需要通过第三方的模块来提供对PHP进行FastCGI方式的集成。

 

 

 

--------------nginx配置gzip压缩

 

一般情况下压缩后的html、css、js、php、jhtml等文件,大小能降至原来的25%,也就是说,原本一个100k的html,压缩后只剩下25k。

这无疑能节省很多带宽,也能降低服务器的负载。

在nginx中配置gzip比较简单

一般情况下只要在nginx.conf的http段中加入下面几行配置即可

引用

  gzip on;

  gzip_min_length 1000;

  gzip_buffers    48k;

  gzip_types      text/plainapplication/x-javascripttext/csstext/htmlapplication/xml;

重启nginx

可以通过网页gzip检测工具来检测网页是否启用了gzip

 

 

 

---------------重定向nginx错误页面的方法

error_page404 /404.html;

这个404.html保证在nginx主目录下的html目录中即可,如果需要在出现404错误后直接跳转到另外一个地址,可以直接设置如下:

error_page404http:

//www.***.net;

同样的方式可以定义常见的403、500等错误。

特别注意的是404.html文件页面大小要超过512k,不然会被ie浏览器替换为ie默认的错误页面。

 

 

------------------------------虚拟主机配置

server{

   listen  80;

   server_name localhost;

   access_log /var/log/nginx/localhost.access.log;

   location/{

      root  /var/www/nginx-default;

      indexindex.phpindex.htmlindex.htm;

   }

   location/doc{

      root  /usr/share;

      autoindexon;

      allow127.0.0.1;

      denyall;

   }

   location/images{

      root  /usr/share;

      autoindexon;

   }

   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;

   }

}

server{

   listen  80;

   server_name ;

   access_log /var/log/nginx/localhost.access.log;

   location/{

      root  /var/www/nginx-default/console;

      indexindex.phpindex.htmlindex.htm;

   }

   location/doc{

      root  /usr/share;

      autoindexon;

      allow127.0.0.1;

      denyall;

   }

   location/images{

      root  /usr/share;

      autoindexon;

   }

   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;

   }

}

 

----------------------监控 

 

location~^/NginxStatus/{

stub_statuson;#Nginx状态监控配置    

}

 

 

 

这样通过http:

//localhost/NginxStatus/(最后的/不能掉)监控到Nginx的运行信息:

 

Activeconnections:

1

serveracceptshandledrequests

 115

Reading:

0Writing:

1Waiting:

0

 

 

NginxStatus显示的内容意思如下:

∙activeconnections–当前Nginx正处理的活动连接数。

∙serveracceptshandledrequests--总共处理了14553819个连接,成功创建14553819次握手(证明中间没有失败的),总共处理了19239266个请求(平均每次握手处理了1.3个数据请求)。

∙reading--nginx读取到客户端的Header信息数。

∙writing--nginx返回给客户端的Header信息数。

∙waiting--开启keep-alive的情况下,这个值等于active-(reading+writing),意思就是Nginx已经处理完正在等候下一次请求指令的驻留连接。

 

-------------------------------静态文件处理

通过正则表达式,我们可让Nginx识别出各种静态文件

 

location~\.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)${

       root/var/www/nginx-default/html;

       expires24h;

       }

对于例如图片、静态HTML文件、js脚本文件和css样式文件等,我们希望Nginx直接处理并返回给浏览器,这样可以大大的加快网页浏览时的速度。

因此对于这类文件我们需要通过root指令来指定文件的存放路径,同时因为这类文件并不常修改,通过expires指令来控制其在浏览器的缓存,以减少不必要的请求。

expires指令可以控制HTTP应答中的“Expires”和“Cache-Control”的头标(起到控制页面缓存的作用)。

您可以使用例如以下的格式来书写Expires:

 

 

expires1January,1970,00:

00:

01GMT;

expires60s;

expires30m;

expires24h;

expires1d;

expiresmax;

expiresoff;

 

 

这样当你输入http:

//192.168.200.100/1.html的时候会自动跳转到var/www/nginx-default/html/1.html

 

例如images路径下的所有请求可以写为:

 

 

 

location~^/images/{

   root/opt/webapp/images;

}

 

 

 

 

------------------------动态页面请求处理[集群]

Nginx本身并不支持现在流行的JSP、ASP、PHP、PERL等动态页面,但是它可以通过反向代理将请求发送到后端的服务器,例如Tomcat、Apache、IIS等来完成动态页面的请求处理。

前面的配置示例中,我们首先定义了由Nginx直接处理的一些静态文件请求后,其他所有的请求通过proxy_pass指令传送给后端的服务器(在上述例子中是Tomcat)。

最简单的proxy_pass用法如下:

 

location/{

   proxy_pass       http:

//localhost:

8080;

   proxy_set_header X-Real-IP $remote_addr;

}

 

 

这里我们没有使用到集群,而是将请求直接送到运行在8080端口的Tomcat服务上来完成类似JSP和Servlet的请求处理。

当页面的访问量非常大的时候,往往需要多个应用服务器来共同承担动态页面的执行操作,这时我们就需要使用集群的架构。

Nginx通过upstream指令来定义一个服务器的集群,最前面那个完整的例子中我们定义了一个名为tomcats的集群,这个集群中包括了三台服务器共6个Tomcat服务。

而proxy_pass指令的写法变成了:

 

 

 

#集群中的所有后台服务器的配置信息

   upstreamtomcats{

    server192.168.0.11:

8080weight=10;

    server192.168.0.11:

8081weight=10;

    server192.168.0.12:

8080weight=10;

    server192.168.0.12:

8081weight=10;

    server192.168.0.13:

8080weight=10;

    server192.168.0.13:

8081weight=10;

   }

   location/{

      proxy_passhttp:

//tomcats;#反向代理

      includeproxy.conf;

       }

 

 

----------------------压力测试

wget  

tarzxvfwebbench-1.5.tar.gz  

cdwebbench-1.5  

make&&makeinstall

#webbench-c100-t10http:

//192.168.200.100/info.php

参数说明:

-c表示并发数,-t表示持续时间(秒)

 

 

root@ubuntu-desktop:

/etc/nginx/sites-available#webbench-c100-t10http:

//192.168.200.100/info.php

Webbench-SimpleWebBenchmark1.5

Copyright(c)RadimKolar1997-2004,GPLOpenSourceSoftware.

Benchmarking:

GEThttp:

//192.168.200.100/info.php

100clients,running10sec.

Speed=19032pages/min,18074373bytes/sec.

Requests:

3172susceed,0failed.

 

 

 

 

 

-------------------------------PPC提供nginx详细配置说明

 

#运行用户

user nobodynobody;

#启动进程

worker_processes 2;

#全局错误日志及PID文件

error_log logs/error.lognotice;

pid       logs/nginx.pid;

#工作模式及连接数上限

events{useepoll;

worker_connections     1024;}#设定http服务器,利用它的反向代理功能提供负载均衡支持

http{#设定mime类型

         include     conf/mime.types;

         default_type application/octet-stream;

         #设定日志格式

         log_formatmain'$remote_addr-$remote_user[$time_local]''"$request"$status$bytes_sent''"$http_referer""$http_user_agent"''"$gzip_ratio"';

         log_formatdownload'$remote_addr-$remote_user[$time_local]''"$request"$status$bytes_sent''"$http_referer""$http_user_agent"''"$http_range""$sent_http_content_range"';

         #设定请求缓冲

         client_header_buffer_size   1k;

         large_client_header_buffers 44k;

         

         #开启gzip模块

         gzipon;

         gzip_min_length 1100;

         gzip_buffers   48k;

         gzip_types     text/plain;

         output_buffers 132k;

         postpone_output 1460;

         

         #设定accesslog

         access_log logs/access.log main;

         client_header_timeout 3m;

         client_body_timeout   3m;

         send_timeout         3m;

         sendfile               on;

         tcp_nopush             on;

         tcp_nodelay           on;

         keepalive_timeout 65;

         

         #设定负载均衡的服务器列表

         upstreammysvr{#weigth参数表示权值,权值越高被分配到的几率越大

                  #本机上的Squid开启3128端口

                  server192.168.8.1:

3128weight=5;

                  server192.168.8.2:

80 weight=1;

                  server192.168.8.3:

80 weight=6;

         }

         

         #设定虚拟主机

         server{listen         80;

                  server_name   192.168.8.1;

                  charsetgb2312;

                  #设定本虚拟主机的访问日志

                  access_log logs/.access.log main;

                  #如果访问/img/*,/js/*,/css/*资源,则直接取本地文件,不通过squid

                  #如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好

                  location~^/(img|js|css)/ {

                           root   /data3/Html;

                           expires24h;

                  }

                  #对"/"启用负载均衡

                  location/{

                           proxy_pass     http:

//mysvr;

                           proxy_redirect         off;

                           proxy_set_header       Host$host;

                           proxy_set_header       X-Real-IP$remote_addr;

                           proxy_set_header       X-Forwarded-For$proxy_add_x_forwarded_for;

                           client_max_body_size   10m;

                           client_body_buffer_size128k;

                           proxy_connect_timeout 90;

                           proxy_send_timeout     90;

                           proxy_read_timeout     90;

                           proxy_buffer_size     4k;

                           proxy_buffers         432k;

                           proxy_busy_buffers_size64k;

                           proxy_temp_file_write_s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1