Nginx 从入门到实践(1)
Nginx 从入门到实践
Nginx
Nginx:1.20.1
CentOS 版本: 7.6
Nginx介绍
传统的 Web 服务器,每个客户端连接作为一个单独的进程或线程处理,需在切换任务时将 CPU 切换到新的任务并创建一个新的运行时上下文,消耗额外的内存和 CPU 时间,当并发请求增加时,服务器响应变慢,从而对性能产生负面影响。
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx常用功能
1、Http代理,反向代理
作为web服务器最常用的功能之一,尤其是反向代理。
2、负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。
Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
3、动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
4、Nginx配置文件结构
nginx 文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
几个常见配置项:
1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
2.$remote_user :用来记录客户端用户名称;
3.$time_local : 用来记录访问时间与时区;
4.$request : 用来记录请求的url与http协议;
5.$status : 用来记录请求状态;成功是200;
6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
7.$http_referer :用来记录从那个页面链接访问过来的;
8.$http_user_agent :记录客户端浏览器的相关信息;
简述Nginx和Apache的差异
(1)Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器
(2)Nginx避免子进程的概念,Apache是基于子进程的;
(3)Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般
(4)Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件
(5)Nginx支持热部署,Apache不支持热部署
(6)Nginx对于静态文件处理具有更高效率,Apache相对一般:
(7)Nginx在反向代理场景具有明显优势,Apache相对一般
(8)Nginx可以做负载均衡,Apache不可以
编译安装nginx服务
在线安装nginx
yum部署Nginx
#安装epel-release扩展源
yum -y install epel-release
然后
yum -y install nginx
来安装 Nginx,然后我们在命令行中 nginx -v
就可以看到具体的 Nginx 版本信息,也就安装完毕了。
注:使用yum安装的nginx配置文件位置在:/etc/nginx.conf。
默认根目录在:/usr/share/nginx/html。
默认日志文件在:/var/log/nginx/路径下。
nginx 状态统计
Nginx 提供了 ngx_http_stub_status_module,ngx_http_reqstat_module模块,这个模块提供了基本的监控功能。
监控的主要指标
我们需要对以下主要的指标进行监控:
1、基本活跃指标
Accepts(接受)、Handled(已处理)、Requests(请求数)是一直在增加的计数器。Active(活跃)
vim /etc/nginx/nginx.conf
server {
listen 80;
server_name localhost;
location /status {
stub_status on;
access_log on;
}
}
nginx 访问控制(用户校验、客户端授权)
以保护状态统计页面为例,配置目录保护
用户校验
(1)使用http服务的命令htpasswd进行用户和密码文件的创建
htpasswd -c /usr/share/nginx/html/htpasswd.nginx namida
修改属主交给ngxin管理,并给予400权限
chown nginx /usr/share/nginx/html/htpasswd.nginx
chmod 400 /usr/share/nginx/html/htpasswd.nginx```
(2)在location块中添加如下两行:
```bash
auth_basic "Welcome to nginx_status.";
auth_basic_user_file
vim /etc/nginx/nginx.conf
location /status{
stub_status on;
access_log ogg;
auth_basic "Welcome to nginx_status.";
auth_basic_user_file /usr/share/nginx/html/htpasswd.nginx;
}
(3)重启nginx并再次访问统计页面
nginx -s reload
基于客户端访问控制
deny是拒绝某一个IP地址、某一个网段客户机访问
allow允许某一个IP地址、某一个网段客户机访问
规则匹配顺序,从上往下,匹配即停止。
需求:添加一条规则拒绝192.168.99.71IP的主机访问
#基于ip地址的身份验证
在location / 中添加
deny 192.168.99.71;
allow all;
更多推荐
所有评论(0)