一、Nginx
1、Nginx概述
- 一款高新能、轻量级Web服务软件
- 系统资源消耗低
- 对HTTP并发连接的处理能力高
- 单台物理服务器可支持30 000~50 000个并发请求。
2、Nginx主要功能:
-
静态文件服务:nginx可直接提供静态文件服务,HTML、CSS、JAVAScrippt、图片等/能够高效地处理并响应静态文件请求
-
反向代理:可作为反向代理服务器,客户端在请求时,会通过代理服务器将流量按照轮询算法,转发到后台不同的服务器,实现负载均衡和高可用
-
缓存服务: nginx自带缓存功能
-
动态服务: 可代理请求,将动态请求模块发送到后端的动态服务进行处理,处理完成后,在返回nginx,nginx响应客户端
-
虚拟主机服务:nginx可以在一台服务器上设置多个虚拟机,同一个服务器上可有多个域名或站点
-
URL重定向:可以实现灵活的url重定向和重写
-
SSL/TLS加密:https加密方式,数字证书验证机制
-
日志功能:可以详细的记录请求信息,包括访问时间,请求路径IP地址、响应状态有助于故障排查(系统控制日志:/var/log/messages 业务日志:access.log访问成功记录;error访问失败记录)
3、nginx主要文件功能
/usr/local/nginx下
-
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件
-
html:目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。
-
logs:用来保存nginx服务器的访问日志错误日志等日志, logs目录可以放在其他路径,比如/var/logs/nginx里面。
-
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能
4、nginx常用命令
-
nginx -t:检查配置文件是否配置正确
-
nginx -v:查看nginx的版本号
-
nginx -s:向主进程传输信号,停止、开启、重启、重新加载
-
nginx -c:设置配置文件的默认路径
5、Nginx主配置文件各模块与作用
- 全局块:全局配置,对全局生效
- events块:配置影响 Nginx 服务器与用户的网络连接
- http块:主要针对HTTP请求的配置,包括代理,缓存,日志反向代理,虚拟web主机,server块
- server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
- location块:用于配置匹配的 uri
6、locatin模块当中root和alias的区别
root:拼接,root指定的目录和location匹配的uri之间做的一个拼接,/opt/ ky30/这两个路径都要真实存在,而且都是目录,并且,在uri目录离面要有web文件
alias:匹配指定路径下的web文件
访问时:/root后面有没有/无所谓,alias加了/,后面也必须有/,否则匹配不到
二、实验
1、 访问状态统计配置
1、先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含HTTP_STUB_STATUS 模块
2、修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
server {
listen 80;
server_name www.kgc.com;
charset utf-8;
location / {
root html;
index index.html index.php;
}
##添加 stub_status 配置##
location /status { #访问位置为/status
stub_status on; #打开状态统计功能
access_log off; #关闭此位置的日志记录
}
}
}
打开:http://192.168.247.40/status
验证:
- Active connections :表示当前的活动连接数;
- server accepts handled requests:表示已经处理的连接信息
- 三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。
2、 基于域名的 Nginx 虚拟主机
为虚拟主机提供域名解析
echo "192.168.247.40 www.kgc_test.com www.accp.com" >> /etc/hosts
为虚拟主机准备网页文档
mkdir -p /var/www/html/kgc
mkdir -p /var/www/html/accp
echo "<h1>www.kgc.com</h1>" > /var/www/html/kgc/index.html
echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html
修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
server {
listen 80;
server_name www.kgc.com; #设置域名www.kgc.com
charset utf-8;
access_log logs/www.kgc.access.log;
location / {
root /var/www/html/kgc; #设置www.kgc.com 的工作目录
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
server {
listen 80;
server_name www.accp.com; #设置域名www.accp.com
charset utf-8;
access_log logs/www.accp.access.log;
location / {
root /var/www/html/accp;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
}
验证1:访问域名www.kgc.com
验证2:访问域名www.accp.com
3、基于IP 的 Nginx 虚拟主机:
ifconfig ens33:0 192.168.247.100 netmask 255.255.255.0
#添加虚拟网卡
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
server {
listen 192.168.247.40:80; #设置监听地址
server_name www.kgc.com;
charset utf-8;
access_log logs/www.kgc.access.log;
location / {
root /var/www/html/kgc;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
server {
listen 192.168.247.100:80; #设置监听地址
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp.access.log;
location / {
root /var/www/html/accp;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
}
systemctl restart nginx
#重启服务
验证1:访问192.168.247.100:80
验证2:访问192.168.247.40:80
4、基于端口的 Nginx 虚拟主机:
验证1:访问888端口
验证1:访问8080端口