首页 > 代码库 > 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详解