企业级Nginx使用部署一

学习目标和内容

1、能够描述web服务器和web应用的关联

2、能够简单介绍Nginx及其作用

3、能够了解Nginx对比其他web服务器的特点

4、能够熟练搭建和启动使用Nginx

5、能够了解Nginx相关启动参数

6、能够熟练配置基于域名、IP、端口的server虚拟机

7、能够了解Nginx的模块介绍

8、能够了解日志相关使用

一、Nginx介绍

1、Nginx作用

网站应用

门户网站、电商、社交

  1. web服务器软件 httpd

同类的web服务器软件:apache nginx(俄罗斯) IIS(微软 fastcgi) lighttpd(德国)

2)代理服务器 反向代理

3)邮箱服务器 IMAP POP3 SMTP

4)负载均衡功能

官方网址:http://nginx.org/

介绍:https://baike.baidu.com/item/nginx/3817705?fr=aladdin

2、网站应用常见架构体系

LAMP(linux+apache+mysql+php)

LNMP(linux+nginx+mysql+php)

Nginx架构的特点(好处):
①热部署 :可以快速重载配置

②并发高:可以同时响应更多的请求 3000~5000

③响应快:尤其在处理静态文件上,响应速度很快

④低消耗:cpu和内存

⑤分布式支持 :反向代理 七层负载均衡

企业中的Nginx

国内企业中很多互联网都选择使用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

7、配置开机自启动服务

chkconfig 服务管理方式

添加nginx服务到chkconfig

shell > chkconfig --add nginx

shell > chkconfig nginx on

/etc/rc.local 适合没有service脚本命令的启动

shell > vim /etc/rc.local

以上两种自启动方式,选择其中之一即可

8、配置文件介绍

编译的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访问同一台服务器主机,不同的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压缩

压缩文件大小变小了,传输更快了。目前市场上大部分浏览器是支持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测试查看