1. Nginx介绍
现阶段 web 服务流行的 组合 LNMP(Linux Nginx(“Engine x”) MySQL PHP),前几年 有人还称之为(LEMP) 。Nginx 是 俄罗斯人开发的, 开源的 www 服务软件,程序的大小才780K左右。 Nginx 本身是一款 静态(html,js ,css,jsp 等)www软件,静态文件小 并发高,同时占用资源少。3W并发 10个进程 才使用150M 内存。www服务软件,现在在国内互联网企业web第一名。
使用平台: unix,linux,windows 都可以。
nginx 主要的功能:
a. www web服务,即http服务
b.负载均衡(反向代理proxy)
c.web cache(web缓存)
Nginx的特点:
1,配置简单,更灵活
2,占用资源少。(3W并发 10个进程 才使用150M 内存)
3,功能种类多(web,cache,proxy),但每一个功能并不是最强的
4,支持epoll模型。是的Nginx可以支持高并发(静态小文件),静态1-2W没问题
5,nginx配合动态服务和apache有区别
6,利用nginx可以对IP限速,可以限制连接数
LAMP和LNMP的区别:
Nginx的应用场合:
1、静态服务器(图片,视频服务),另一个lighttpd。并发:1-3W
html,js,css,.flv等。
2、动态服务,nginx+fastcgi的方式运行php,jsp。并发:500-1500。
原因;PHP FCGI :500-1500 mysql :300-1500
apache+php,lighttpd+fcgi php
3、反向代理,负载均衡。日PV2000W以下,都可以直接用Nginx做代理。
haproxy,F5,a10
4、缓存服务。SQUID,VARNISH
各个web服务器的性能对比测试,可参考:http://yifangyou.blog.51cto.com/900206/617213/
2. Nginx安装
2.1 nginx 安装过程
[root@nginx /]# cat /etc/redhat-release #查看系统版本
CentOS Linux release 7.3.1611 (Core)
[root@nginx /]# yum -y install wget #安装wget
[root@nginx /]# cd /etc/yum.repos.d #更换yum源
[root@nginx yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@nginx yum.repos.d]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@nginx yum.repos.d]# mv CentOS-Base.repo.bak CentOS-Base.repo
[root@nginx yum.repos.d]# yum clean all
[root@nginx yum.repos.d]# cd
[root@nginx ~]# wget http://nginx.org/download/nginx-1.8.1.tar.gz #下载nginx源码包
[root@nginx ~]# yum -y install pcre-devel openssl-devel gcc gcc-c++ make #安装依赖
[root@nginx ~]# useradd www -s /sbin/nologin -M #添加 www 用户和组
[root@nginx ~]# tar zxf nginx-1.8.1.tar.gz #解压 nginx 源码包
[root@nginx ~]# cd nginx-1.8.1 #进入源码目录
[root@nginx nginx-1.8.1]# ./configure --prefix=/application/nginx-1.8.1 --user=www --group=www --with-pcre --with-http_stub_status_module --with-http_ssl_module #configure
[root@nginx nginx-1.8.1]# make && make install #编译和安装
[root@nginx nginx-1.8.1]# ln -s /application/nginx-1.8.1/ /application/nginx #做软连接
[root@nginx nginx-1.8.1]# /application/nginx/sbin/nginx #启动nginx
[root@nginx nginx-1.8.1]# curl -I http://127.0.0.1 #查看nginx 网站
HTTP/1.1 200 OK
Server: nginx/1.8.1
Date: Mon, 17 Apr 2017 13:43:04 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 17 Apr 2017 13:41:37 GMT
Connection: keep-alive
ETag: "58f4c611-264"
Accept-Ranges: bytes
安装成功!
2.2 nginx启动后不能访问 排查
本地排查:
1)注意启动时 是否有报错
2)先curl 自己IP,看看服务是否启动
3)ps -ef|grep nginx ,看看nginx进程是否活着
Windows浏览器访问:
1)ping 192.168.1.82 物理通不通
2)telnet 192.168.1.82 80 浏览器到web服务通不通
3)服务器本地curl 192.168.1.82 WEB服务开没开
3. Nginx配置文件
3.1 关于Nginx模块
Nginx 使用不同的模块来实现不同的功能,主要有2组重要的模块:
1,Nginx core modules(必须的)
包括
Main
Events
2,Standard HTTP modules (虽然不是必须,但是缺省都会安装,不建议改动),典型的包括
Core
Access
FastCGI
Gzip 压缩模块(性能优化)
Log 日志模块
Proxy
Rewrite URL重写模块
Upstream 负载均衡模块
等等
提示:缺省条件下,这两组模块都会安装,修改配置文件,主要是根据这2组模块的功能来修改模块的参数。
各个模块,参见官方文档:http://nginx.org/en/docs/
3.2 Nginx 默认相关的文件
[root@nginx application]# tree ./nginx/ #查看nginx程序的默认的文件
./nginx/
├── client_body_temp
├── conf #nginx 配置文件目录
│ ├── fastcgi.conf #fastcgi配置文件
│ ├── fastcgi.conf.default
│ ├── fastcgi_params #fastcgi参数配置文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types #nginx 支持的文件类型列表文件
│ ├── mime.types.default
│ ├── nginx.conf #nginx 主网站配置文件
│ ├── nginx.conf