Nginx简介
没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。
然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个WEB服务器有着各自鲜明的特点。
Apache的发展时期很长,毫无争议的世界第一大web服务器。它有着很多的优点:稳定、开源、跨平台等等,不过也是因为它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。
这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
然后呢,Igor Sysoev将Nginx代码开源,并且赋予自由软件许可证
为什么要用nginx
- 轻量级,配置简单
- Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
- 内存消耗少
- 作为负载均衡成本低廉
- 高度的模块化和自由软件许可证使得第三方模块层出不穷
- Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
- 这些优秀的设计带来的是极大的稳定性
- 支持热部署
Nginx架构
安装
系统平台:CentOS Linux release 7.0.1406 (Core) 64位
yum安装
1、安装nginx 源
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装后可以看到/etc/yum.repos.d/ 目录中多了nginx.repo 的文件。
2、执行安装
yum install -y nginx
3、Nginx默认路径
# rpm -ql nginx/etc/nginx # 配置路径/etc/nginx/nginx.conf # 默认配置文件/usr/share/nginx/html # 默认站点位置 /usr/share/nginx/html/50x.html /usr/share/nginx/html/index.html # 默认首页文件/var/log/nginx #默认日志位置
4、常用命令
获取帮助:nginx -h
启动:nginx
测试配置的正确性:nginx -t
优雅重启:nginx -s reload
查看nginx进程:ps -ef | grep nginx
停止:nginx -s stop
源码安装
1、安装依赖
编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
PCRE 作用是让 Nginx 支持 Rewrite 功能。
yum install -y pcre-devel
2、添加用户
useradd -M -s /sbin/nologin www
3、下载&解压
下载地址:http://nginx.org/download/nginx-1.16.0.tar.gz
[root@master tools]# wget http://nginx.org/download/nginx-1.16.0.tar.gz [root@master tools]# tar -zxvf nginx-1.16.0.tar.gz
4、配置编译
配置
[root@master nginx-1.16.0]# ./configure --prefix=/application/nginx-1.16.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
编译后查看是否成功:echo $?
返回值为0表示成功
# 编译参数说明 --prefix 表示指定软件安装到哪个目录中,指定目录不存在会自动创建 --user/--group nginx工作进程由哪个用户运行管理 --with-http_stub_status_module 启动nginx状态模块功能(用户访问nginx的网络信息) --with-http_ssl_module 启动https功能模块
更多配置选项:https://www.cnblogs.com/felixzh/p/6283791.html
编译并安装:
[root@master nginx-1.16.0]# make && make install
安装文件
5、创建软链接
[root@master application]# ln -s /application/nginx-1.16.0/ /application/nginx [root@master application]# ll total 0 lrwxrwxrwx 1 root root 26 Aug 3 18:10 nginx -> /application/nginx-1.16.0/ drwxr-xr-x 11 root root 142 Aug 3 18:10 nginx-1.16.0
如果要简化配置文件,去掉注释项
egrep -v "#|^$" nginx.conf.default >nginx.conf
6、添加开机启动
编辑服务文件
vim /usr/lib/systemd/system/nginx.service [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking #PIDFile=/run/nginx.pid ExecStartPre=/application/nginx/sbin/nginx -t ExecStart=/application/nginx/sbin/nginx ExecReload=/application/nginx/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
添加
systemctl enable nginx.service
7、完成安装
启动nginx服务并检查
启动 #systemctl start nginx.service 检查: # ps -ef |grep nginx root 31161 1 0 16:29 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx www 31162 31161 0 16:29 ? 00:00:00 nginx: worker process root 31164 27991 0 16:29 pts/0 00:00:00 grep --color=auto nginx # netstat -lntup |grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26548/nginx