nginx简介及入门

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 粗略简单的介绍下nginx相关知识

nginx是高性能反向代理及负载均衡服务器,下面介绍一下基础功能
1、反向代理
反向代理指代理后端服务器响应客户端请求的一个中介服务器,代理的对象是服务端。

在浏览器输入 www.abc.com , 从 nginx 服务器跳转到 linux 系统 tomcat 主页面。

server {

    listen       80;   
    server_name  192.168.4.32;   #监听地址

    location  / {       
       root html;  #/html目录
       proxy_pass http://127.0.0.1:8080;  #请求转向
       index  index.html index.htm;      #设置默认页       
    } 
}
AI 代码解读

2、负载均衡
在浏览器地址栏输入 http://192.168.4.32/example/a.html ,平均到 5000 和 8080 端口中,实现负载均衡效果。

upstream myserver {

  server 192.167.4.32:5000;
  server 192.168.4.32:8080;
}


server {
    listen       80;   #监听端口
    server_name  192.168.4.32;   #监听地址

    location  / {       
       root html;  #html目录
       index index.html index.htm;  #设置默认页
       proxy_pass  http://myserver;  #请求转向 myserver 定义的服务器列表      
    } 
}
AI 代码解读

3、nginx 负载均衡
轮询(默认)   按请求的时间顺序依次逐一分配,如果服务器down掉,能自动剔除。 权重   weight 越高,被分配的客户端越多,默认为 1。比如:

upstream myserver
{
server 192.167.4.32:5000 weight=10;
server 192.168.4.32:8080 weight=5;
}
ip_hash   按请求 ip 的 hash 值分配,每个访客固定访问一个后端服务器。比如:

upstream myserver
{
ip_hash;
server 192.167.4.32:5000;
server 192.168.4.32:8080;
}
fair   按后端服务器的响应时间来分配,响应时间短的优先分配到请求。比如:

upstream myserver
{
fair;
server 192.168.4.32:5000;
server 192.168.4.32:8080;
}
4、Nginx 缓存
在3天内,通过浏览器地址栏访问 http://192.168.4.32/a.jpg ,不会从服务器抓取资源,3天后(过期)则从服务器重新下载。
http 区域下添加缓存区配置
proxy_cache_path /tmp/nginx_proxy_cache levels=1 keys_zone=cache_one:512m inactive=60s max_size=1000m;

server 区域下添加缓存配置

location ~ .(gif|jpg|png|htm|html|css|js)(.*) {

 proxy_pass http://192.168.4.32:5000;#如果没有缓存则转向请求
 proxy_redirect off;
 proxy_cache cache_one;
 proxy_cache_valid 200 1h;            #对不同的 HTTP 状态码设置不同的缓存时间
 proxy_cache_valid 500 1d;
 proxy_cache_valid any 1m;
 expires 3d;
AI 代码解读

}
expires 是给一个资源设定一个过期时间,通过 expires 参数设置,可以使浏览器缓存过期时间之前的内容,减少与服务器之间的请求和流量。也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。
5、动静分离
通过浏览器地址栏访问 www.abc.com/a.html ,访问静态资源服务器的静态资源内容。通过浏览器地址栏访问 www.abc.com/a.jsp ,访问动态资源服务器的动态资源内容。

upstream static {

server 192.167.4.31:80;
AI 代码解读

}

upstream dynamic {

server 192.167.4.32:8080;
AI 代码解读

}

server {

listen       80;   #监听端口
server_name  www.abc.com; 监听地址

# 拦截动态资源
location ~ .*\.(php|jsp)$ {
   proxy_pass http://dynamic;
}

# 拦截静态资源
location ~ .*\.(jpg|png|htm|html|css|js)$ {       
   root /data/;  #html目录
   proxy_pass http://static;
   autoindex on;;  #自动打开文件列表
}  
AI 代码解读

}
6、原理解析
Nginx 启动之后,在 Linux 系统中有两个进程,一个为 master,一个为 worker。master 作为管理员不参与任何工作,只负责给多个 worker 分配不同的任务(worker 一般设置为服务器cpu核心数)。

worker 是如何工作的?
  客户端发送一个请求首先要经过 master,管理员收到请求后会将请求通知给 worker,多个 worker 以争抢的机制来抢夺任务,得到任务的 worker 会将请求经由 tomcat 等做请求转发、反向代理、访问数据库等(nginx 本身是不直接支持 java 的)。

一个 master 和多个 worker 的好处?
可以使用 nginx -s reload 进行热部署。 每个 worker 是独立的进程,如果其中一个 worker 出现问题,其它 worker 是独立运行的,会继续争抢任务,实现客户端的请求过程,而不会造成服务中断。 设置多少个 worker 合适?   Nginx 和 redis 类似,都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,每个 worker 的线程可以把一个 cpu 的性能发挥到极致,因此,worker 数和服务器的 cpu 数相等是最为适宜的。

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
fddffd
+关注
目录
打赏
0
0
0
0
2
分享
相关文章
Nginx入门笔记
Nginx入门笔记
350 0
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
595 0
Nginx入门 -- 理解 Nginx 的请求处理流程
Nginx入门 -- 理解 Nginx 的请求处理流程
418 1
Nginx入门 -- 了解Nginx中证书配置
Nginx入门 -- 了解Nginx中证书配置
121 0
Nginx入门 -- 深入了解Nginx负载均衡
Nginx入门 -- 深入了解Nginx负载均衡
61 0
Nginx入门 -- Nginx 配置详解
Nginx入门 -- Nginx 配置详解
394 0
Nginx入门 -- 基本数据结构中之ngx_hash_t
Nginx入门 -- 基本数据结构中之ngx_hash_t
60 0
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
64 0
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
119 0