学习目标和内容
1、能够描述web服务器和web应用的关联
2、能够简单介绍Nginx及其作用
3、能够了解Nginx对比其他web服务器的特点
4、能够熟练搭建和启动使用Nginx
5、能够了解Nginx相关启动参数
6、能够熟练配置基于域名、IP、端口的server虚拟机
7、能够了解Nginx的模块介绍
8、能够了解日志相关使用
网站应用
门户网站、电商、社交
同类的web服务器软件:apache nginx(俄罗斯) IIS(微软 fastcgi) lighttpd(德国)
2)代理服务器 反向代理
3)邮箱服务器 IMAP POP3 SMTP
4)负载均衡功能
官方网址:http://nginx.org/
介绍:https://baike.baidu.com/item/nginx/3817705?fr=aladdin
LAMP(linux+apache+mysql+php)
LNMP(linux+nginx+mysql+php)
Nginx架构的特点(好处):
①热部署 :可以快速重载配置
②并发高:可以同时响应更多的请求 3000~5000
③响应快:尤其在处理静态文件上,响应速度很快
④低消耗:cpu和内存
⑤分布式支持 :反向代理 七层负载均衡
国内企业中很多互联网都选择使用nginx
BAT baidu alibaba tencent
BATJ J 京东
TMD 头条 美团 滴滴
网易
软件的安装方式:
①rpm
②yum rpm包 解决依赖问题
③源码编译 gcc c++ configure make make install
④glibc 通用包 已经编译好的 二进制执行文件
Nginx的安装方式,一般采用以下两种:
①官网yum源
第一步:配置nginx的官方源
mainline版本
服务器的部署使用stable版本最好
第二步 yum命令安装nginx
shell > yum -y install nginx
启动命令
shell > service nginx start
注意如果之间环境已经安装过apache,可能已经启用占用80的端口,会出现以下提示
Yum方式安装默认的配置文件在/etc下
Yum方式默认的网站根目录
可能遇到的问题:
提前工作:
安装解决依赖问题pcre openssl zlib
shell > yum -y install gcc pcre-devel openssl-devel zlib-devel
为了看到明显效果,把之前yum方式安装的nginx卸载掉,注意先停掉服务
①获取源码软件包
一般服务器直接通过curl或者wget下载软件包到服务器
把已经有的软件包上传到服务器 ftp ssh软件包(sftp) scp pscp
②解压编译安装
shell > tar xvf nginx-1.12.2.tar.gz
shell > cd nginx-1.12.2
shell > ./configure --prefix=/usr/local/nginx-1.12.2 --with-http_ssl_module
shell > make && make install
执行过程之后,没有出现错误,在--prefix指定的安装目录,出现了对应文件
--with-http_ssl_module 开启https协议需要用到
判断软件是否安装成的方式:
①看编译后有没有error错误
②看安装到的软件目录,有没有生成软件
默认只有conf,html,logs,sbin
启动过一次之后,就会生成一些临时目录
一般操作,会修改配置文件,所以了解conf目录
启动nginx,需要了解sbin目录
查看版本号和编译参数
shell > /usr/local/nginx/sbin/nginx -V
启动
shell > /usr/local/nginx/sbin/nginx
关闭
shell > /usr/local/nginx/sbin/nginx -s stop
重载配置
shell > /usr/local/nginx/sbin/nginx -s reload
Kill 命令 传输信号给进程
TERM, INT(快速退出,当前的请求不执行完成就退出)
QUIT (优雅退出,执行完当前的请求后退出)
HUP (重新加载配置文件,用新的配置文件启动新worker进程,并优雅的关闭旧的worker进程)
USR1 (重新打开日志文件)
USR2 (平滑的升级nginx二进制文件)
WINCH (优雅的关闭worker进程)
语法:
Kill 选项参数 pid
关闭nginx
快速关闭
kill -INT pid
优雅关闭
kill -QUIT pid
一般情况下,为了多个版本方便管理和使用,可以建立一个软连接到不同软件版本
shell >ln -s /usr/local/nginx-1.12.2 /usr/local/nginx
服务脚本文件参考地址:
https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
在centos6中,把启动脚本修改后,放到init.d中,之后就可以通过service命令进行管理使用了。
①创建脚本文件
shell > vim /etc/init.d/nginx
把以上网页里的脚本,贴入以上路径
②修改启动脚本参数
赋予脚本执行权限
shell > chmod +x nginx
测试服务
shell > service nginx start|stop|restart
chkconfig 服务管理方式
添加nginx服务到chkconfig
shell > chkconfig --add nginx
shell > chkconfig nginx on
/etc/rc.local 适合没有service脚本命令的启动
shell > vim /etc/rc.local
以上两种自启动方式,选择其中之一即可
编译的nginx默认的配置文件位置
核心数、连接数、并发理论值
重点掌握以下配置
http=>server=>location
http 配置里有一个,可以有多个server(apache的vhost)
一个server里,可以有多个location
在实际生产业务环境中,一台web服务器,需要使用多个网站部署。搭建vhost虚拟机主机实现不同域名,解析绑定到不同的目录。
①编辑配置文件,增加server段配置
②解析host域名,建立网站目录及其文件
建立目录并且创建一个文件
shell > cd /usr/local/nginx/html
shell > mkdir web1
shell > vim index.html
写一些测试内容
在windows下解析域名,为了能够使
③测试
配置修改之后,需要检测配置,然后重载配置
实现效果
多个IP访问同一台服务器主机,不同的IP解析到不同的vhost虚拟机中
①eth0绑定多个IP地址
复制eth0,修改关键项为eth0:0
注意:如果是通过桌面安装的linux,启动了NetworkManager服务,需要关闭,才可以在配置文件里绑定虚拟网卡。
可以使用临时绑定一个虚拟网卡ip
shell > ifconfig eth0:1 192.168.93.180
②启动新配置,查看IP是否绑定成功
③配置基于IP的虚拟机
建立一个ip网站的目录
检测配置文件,重载配置
shell > service nginx reload
默认不占用80端口,能够稍微隐秘一些
①建立网站目录
②建立虚拟机修改配置
当访问的域名或者IP没有匹配到对应的server虚拟机时,会默认访问第一个server虚拟机。
B/S架构里 browser浏览器 就是客户端
告知浏览器获取的信息是在某个区间时间段是有效的。
d day 天
H hour 小时
①上传一个图片
②修改配置
location在server段下面
③重载配置,查看测试效果
压缩文件大小变小了,传输更快了。目前市场上大部分浏览器是支持GZIP的。IE6以下支持不好,会出现乱码情况。
http://nginx.org/en/docs/http/ngx_http_gzip_module.html
图片、css(层叠样式表)、js(浏览器端执行的脚本)文件
①配置实现
注意:jpg格式结尾的图片,需要jpeg识别
②测试看返回信息
正向代理
特点:知道自己使用了代理,需要填写代理服务器的IP等相关连接信息
反向代理
特点:用户是无感知的,不知道使用了代理服务器。反向代理服务器是和真实访问的访问的服务器是在一起的,有关联的。
①配置反向代理
LNMPA
把php的请求转发到httpd:8080端口进行处理
把nginx或者apache网站目录路径一致
注意修改apache的配置文件
Nginx里默认会有两种日志
access.log 访问日志 查看统计用户的访问信息 流量
error.log 错误日志 错误信息 重写信息
默认路径 /usr/local/nginx/logs
yum安装默认的日志目录 /var/logs/nginx
①查看access.log
②查看配置解析参数说明
shell > cd /usr/local/nginx/logs
shell > vim nginx.conf
$remote_addr | 客户端的ip地址(代理服务器,显示代理服务ip) |
---|---|
$remote_user | 用于记录远程客户端的用户名称(一般为“-”) |
$time_local | 用于记录访问时间和时区 |
$request | 用于记录请求的url以及请求方法 |
$status | 响应状态码,例如:200成功、404页面找不到等。 |
$body_bytes_sent | 给客户端发送的文件主体内容字节数 |
$http_user_agent | 用户所使用的代理(一般为浏览器) |
$http_x_forwarded_for | 可以记录客户端IP,通过代理服务器来记录客户端的ip地址 |
$http_referer | 可以记录用户是从哪个链接访问过来的 |
访问日志,可以统计分析用户的流量的相关情况。客情分析
默认记录配置启动错误信息和访问请求错误信息
错误日志,
①一般用来解决错误信息,通过提示的错误信息,排除错误。
②查看错误信息里,查找不到文件,header状态码404的状态。查看是否文件资源失效,有问题,处理问题。
①开启日志的定义规则
③重启nginx测试查看