首页 > 代码库 > nginx详解

nginx详解

nginx的优点

1:静态小文件高并发

2:占用资源小(2W并发,开10个线程,占用几百兆内存)

3:功能种类多(cache缓存,反向代理)

4:支持epoll模型(nginx高并发的实现功能)

5:利用nginx可以对IP限速,可以限制连接数

6:配置简单


lnmp实现原理

1:用户请求静态过来到nginx

2:如果客户请求动态文件到nginx,nginx通过fastcgi_pass的配置将.php的文件请求转发给php服务端(php_fcgi:9000(默认端口))

3:由php去请求mysql数据库


nginx的应用场合

1:静态服务器(图片,视频服务)

    html,js,css,flv等

2:动态服务的实现(nginx+fastcgi的方式运行php),500-1500的并发

3:反向代理负载均衡

4:缓存服务(squid varnish)


nginx和lighttpd的比较

nginx优点:

nginx基于异步IO模型,性能强,能够支持上万并发

对小文件支持很好,(限静态小文件1M)

配置简单,消耗资源少

nginx缺点:

扩展库必须编译到主程序

lighttpd优点:

基于异步IO模型,性能和nginx相近

扩展库是SO模式,比nginx灵活

通过插件(mod_secdownload),通过对url加密(防盗链)

lighttpd缺点:

安全性低


静态内容测试

处理静态文件apache比nginx和lighttpd差(小于1M的静态文件nginx有明显优势)

动态内容测试

处理动态文件apache优于nginx和lighttpd


nginx虚拟主机

基于IP(不完善)

基于端口

基于域名


安装源码nginx

1:环境准备

创建用户

pcre pcre-devel支持rewrite

openssl openssl-devel支持https

2:安装

./configuser --user=用户名  --group=用户组 --prefix=安装目录 --with-http_stub_status_module(状态模块) --with-http_ssl_module(https模块) --with-pcre=(编译安装的

pcre安装目录,yum安装不需要)

make

make install

端口反查(lsof -i :80)

3:基本配置(http://nginx.org/en/docs)

3.1:模块

必需模块

main

events

典型模块

core

access

fastcgi

gzip(压缩模块,性能优化)

log(日志模块)

proxy(代理模块)

rewrite(url重写模块)

upstream(负载均衡模块)

3.2:配置文件

nginx.conf静态文件配置文件(主配置文件)

fastcgi.conf动态文件配置文件

fastcgi_params动态文件配置参数

3.3:主配置文件

worker_processes (进程,nginx的进程模式,一个主进程多个worker模式,一般和cpu核数相等)

events {

     worker_connections 1024  (worker的链接数,整个worker可以接受多少个链接)

}

http {

    server {

}

}

4:基于域名的虚拟主机

server {

      listen 80 #监听端口

 server_name www.a.com  a.com #域名 别名(访问a.com会访问到www.a.com的内容)

 root /vat/www/www.a.com #www.a.com的根目录

 index index.html index.htm

 stub_status on #添加状态配置(可以看到并发链接状态)

 access_log off #不启用日志

}

4.1:301的永久跳转(访问b.com或者直接访问IP跳转到www.b.com)

server {

      listen 80 #监听端口

 server_name b.com 

 root /vat/www/www.b.com

 index index.html index.htm

      rewrite ^/(.*) http://www.b.com/$1 permanent #(访问域名下得所有内容跳转到http://www.b.com/$1,其中$1匹配的.*的内容,permanent表示永久跳转)

}

5:解决恶意域名绑定配置

server {

      listen 80

      location / {

    deny all

 }


}

6:日志配置

server {

      listen 80

 server_name www.c.com

 root /vat/www/www.c.com

 index index.html index.htm

      access_log logs/www.c.com_access.log main #(可以自定义日志格式,main表示调用main定义的日志格式)

 error_log logs/www.c.com_error.log

}


7:日志切割

apache日志切割

1:cronlog

2:rotatelog

3:cron+mv+granceful

nginx日志切割

通过脚本实现


8:日志分析

awstats工具

9:通过include配置虚拟主机(创建extra目录)

nginx详解