认识Nginx
(一):Nginx是一个开源且高性能,可靠的Http服务
1:高性能,高并发,高可靠
2:热部署 nginx使用的是epoll网络模型,相比于Apache服务器使用的Select网络模型,epoll模型使用户发起请求会直接处理,效率高 而Select网络模型当用户发送请求后会进行一次遍历扫描,从而导致性能底下
3:高扩展:具有丰富的模块,可以根据自己的需要随时集成
(二):常见的web服务
Apache :早期使用,性能低,用的少,上手难
IIS:微软开发,Windows控制面板中万维网服务中安装使用
Nginx:强大的一批
Tengine:淘宝基于Nginx做的二次开发
GWS:谷歌公司开发的
openresty:也是基于Nginx和Lua开发的
lighttpd:德国开发
(三):应该场景
1:代理
负载均衡
Nginx缓存
2:静态资源和动态资源分开处理,应用服务器擅长处理动态内容,如果用户请求的是静态资源,比如图片,那么Nginx可以将用户的请求直接交给最近的静态存储服务器,这样请求的速度就会更快
3:Nginx的安全功能
https
限速限流
访问控制
Nginx+Lua构建web安全应用防火墙,简称waf (web applocation firewalld)
(四):Nginx安装
1:源码安装(不推荐。复杂)
版本更新迭代困难
2:yum安装
官方的仓库:版本新适合平时学习
3:配置官方仓库,在/etc/yum.repos.d/nginx.repo 新建nginx.repo文件,写入一下官方源
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
这里推荐使用官方未更改过的版本,epel的仓库:一般epel源中Nginx都是版本较低,且一般被人开发过的产品,不太适合平时学习。
4:再安装,发现默认源就会前往刚刚设置的源里面去
yum -y install nginx
(五):Nginx基本配置
1:nginx -t 进行语法检测,改完配置,重启前测试,防止配置文件改完报错,一重启,然后你就准备跑路吧!
2:重启并开机自启
systemctl start nginx
systemctl enable nginx
3:这里来说一下Nginx的主配置文件
vim /etc/nginx/nginx.conf
4:了解Server站点
使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
server {
listen 80; #监听端口, 默认80
server_name bgx.com; #提供的域名
#控制网站访问路径
location / {
root /usr/share/nginx/html; #存放网站源代码的位置
index index.html index.htm; #默认返回网站的文件
}
}
include /etc/nginx/conf.d/*.conf;
包含conf.d目录下所有以.conf结尾的文件
(六):Nginx的虚拟主机
一般在企业中会有多套业务,那么在不使用Nginx的情况下可能需要多台服务器来部署,但是Nginx中可以使用一套系统捞部署多套业务,以下是介绍。
Nginx配置虚拟主机的三种方式
1:基于多IP方式
方式一:
首先试一下多网卡多IP方式,一般虚拟机加一块网卡改个地址即可
然后进入nginx中server配置文件conf.d
cd /etc/nginx/conf.d
vim game.conf
然后写入
server {
listen 10.0.0.7:80;
location / {
root /ip1;
index index.html;
}
}
server {
listen 10.0.0.8:80;
location / {
root /ip2;
index index.html;
}
}
创建ip1和ip2目录
mkdir /ip1
mkdir /ip2
放入测试文件代码
echo "10" > /ip1/index.html
echo "172" > /ip2/index.html
方式二:单网卡,多IP
使用命令临时添加绑定一块网卡
ip addr add 10.0.0.8/24 dev eth0
然后去nginx的conf.dserver中将172地址改为新加的ip,重启即可
重启服务
systemctl reload nginx
systemctl restart nginx
2:基于端口配置方式
可以通过同一个ip不同端口进行访问
这里以81,82两个端口举例
然后进入nginx中server配置文件conf.d并创建prot.conf文件
cd /etc/nginx/conf.d/
vim prot.conf
server {
listen 81;
location / {
root /prot1;
index index.html;
}
}
server {
listen 82;
location / {
root /prot2;
index index.html;
}
}
创建目录并存放代码
mkdir prot1
mkdir prot2
echo "81" > /prot1/index.html
echo "82" > /prot2/index.html
重启即可
3:基于多个hosts名称方式(多域名方式)(重要)
以a.wl.com和b.wl.com为例
这里在conf.d中准备两个配置文件,就叫com1.conf com2.conf
vim /etc/nginx/conf.d/com1.conf
server {
listen 80;
server_name a.wl.com;
location / {
root /com1;
index index.html;
}
}
vim /etc/nginx/conf.d/com2.conf
server {
listen 80;
server_name b.wl.com;
location / {
root /com2;
index.html;
}
}
mkdir /com1
mkdir /com2
echo "a.wl" > /com1/index.html
echo "b.wl" > /com2/index.html
重启服务即可
在虚拟环境下可以自己篡改域名
10.0.0.7 a.wl.com
10.0.0.7 b.wl.com
(七):Nginx的管理日志
查看Nginx的日志
tail -f /var/log/nginx/access.log
1:nginx有着非常灵活的日志记录模式,nginx的日志格式可以自己在nginx配置文件中自己通过log_format配置
语法如下
Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http server location (针对全局,服务,location生效,范围也不一样)
设置日志方式,可以根据自己的需要,哪些信息需要记录,哪些信息不要记录
2:日志的路径或者全局设置,上面是在http下全局生效,现在需要单独给一个网站配置日志,一个网站专门有一个记录日志的地方
比如A网站名叫/etc/nginx/conf.d/game.conf
我想把A网站日志单独设置单独记录,取个日志名叫/var/log/nginx/game.log
注意前面的/var/log/nginx全路径必须以及存在,后面的名字自己取
设置如下:
cd /etc/nginx/conf.d
设置完检测nginx -t 并重启进行测试,发现日志记录到新的文件中了
3:在location中可不必在单独设置日志存存放地,如果不想记录某一个location的日志,可以把这个location的日志记录功能关闭
access_log off;
4:日志的切割
进入/var/log/nginx查看是否切割,注意关机状态下是不会切割的