笔记基于ubuntu16.04 Desktop-LTS
简介:
- 优点:
- 高并发:在一个
BSD-like
协议下发行,基于epoll
/kqueue
模型开发,支持高并发量- 内存消耗低: 于处理静态文件,相较于其他web(比如:
apache
),占用更少的内存及资源- 简单稳定: 配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定
- 模块化程度高: 功能模块插件化设计,可以自由配置相应的功能
- 支持
Rwrite
重写规则: 能够根据域名,URL等请求关键点,实现定制化的高质量分发- 低成本:
Nginx
的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均衡器成本相当低。- 支持多系统:
Nginx
代码完全用C语言从头写成,可以在各系统上编译并使用
- 缺点:
- 动态处理差: nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺
- rewrite弱: 虽然nginx支持rewrite功能多,但是相较于Apache之类重量级的web软件能力稍欠缺
配置Nginx:
1. 安装
# 安装依赖
sudo apt-get install -y build-essential libssl-dev libtool libpcre3 libpcre3-dev make openssl zlib1g-dev
# 安装Nginx
sudo apt-get install nginx -y
2. 检查
# 查看系统进程
sudo netstat -tnulp | grep nginx
# 浏览器输入
127.0.0.1
3. 服务相关命令
systemctl start|stop|reload|... nginx
/etc/init.d/nginx start|stop|restart|... # 尽量使用这个命令来开启关闭,里面指明了一些配置信息
/usr/sbin/nginx ... #不推荐使用系统命令
4. Nginx相关命令
nginx -v 查看版本信息
nginx -s stop 停止 #不推荐用系统命令,这里执行的是 /usr/sbin/nginx
nginx -s reload 重启 #不推荐用系统命令,这里执行的是 /usr/sbin/nginx
nginx -t 检查默认配置文件
nginx -t -c file.conf 指定配置文件进行检查
5. 卸载
# 查看Nginx相关的软件
dpkg --get-selections|grep nginx
dpkg --list | grep nginx
# 进行卸载
apt-get --purge remove nginx
apt-get --purge remove nginx-common
apt-get --purge remove nginx-core
Nginx 配置路径:
1. Nginx软件目录:
工作目录: /etc/nginx
执行文件: /usr/sbin/nginx # 这属于系统命令的执行路径,不推荐使用此文件执行
日志目录: /var/log/nginx
启动文件: /etc/init.d/nginx # 尽量使用这个命令来开启关闭
web目录: /var/www/html/ # 存放静态文件 首页文件是index.nginx-debian.html
/usr/share/nginx/html/ #首页文件是index.html
2. Nginx配置文件
- 默认全局配置文件: 包含全局配置段,和http配置段,其中在http配置段中
include /etc/nginx/conf.d/*.conf;
表示我们自定义的子配置文件的路径,会首先进行处理, 在这个下面还有include /etc/nginx/sites-enabled/*;
表示如果我们自定义的配置无法满足请求,会在这个路径里的配置文件继续处理
# 路径
/etc/nginx/nginx.conf
- 其他配置文件路径: 文件内包含
server
配置,其中每个server
代表一个站点, 站点可以有不同的ip和端口,而每个server
中的location
可以代表一个请求路径
# 路径
/etc/nginx/{sites-available/sites-enabled/conf.d} # 其中conf.d中放的是我们自定义的配置
一个请求生命周期:
Request(127.0.0.1:80/hello),经过全局配置文件,进入包含
server
配置的子配置文件内,Nginx根据Request的路径和端口来使用不同的server
配置,进入到server
配置后,根据location
后的跟的请求路径进行匹配. 如果没匹配到请求路径,则会给客户端报404,如果匹配到location
后的请求路径,进入到设置的root
资源文文件夹中,根据$uri
(hello) 资源文件夹中寻找$uri
的文件,如果未找到则会把$uri
当成$uri/
路径来寻找$uri/
下的index文件,如果没找到index文件或者$uri/
也没有,则会给客户端404