nginx简介及入门

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月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;      #设置默认页       
    } 
}

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 定义的服务器列表      
    } 
}

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;

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

upstream static {

server 192.167.4.31:80;

}

upstream dynamic {

server 192.167.4.32:8080;

}

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;;  #自动打开文件列表
}  

}
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 数相等是最为适宜的。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
4月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
101 2
简介Nginx,Tomcat和 Apache
|
4月前
|
存储 缓存 负载均衡
Nginx入门笔记
Nginx入门笔记
163 0
|
1月前
|
应用服务中间件 nginx C语言
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
这两种数据结构是Nginx自定义数据类型的例子,它们证明了Nginx设计者在构建一个为高并发和高性能优化的web服务器时的精确和高效。理解这些数据结构是深入学习Nginx内部机制的基础,同时也是扩展和开发Nginx模块不可或缺的一部分知识。
26 1
|
1月前
|
应用服务中间件 nginx
Nginx——虚拟主机简介
Nginx——虚拟主机简介
29 0
|
3月前
|
监控 前端开发 应用服务中间件
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(2)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
62 1
|
3月前
|
负载均衡 前端开发 应用服务中间件
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(1)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
121 1
|
4月前
|
缓存 负载均衡 应用服务中间件
nginx(NGINX)详细下载安装及使用教程(非常适合入门)
nginx(NGINX)详细下载安装及使用教程(非常适合入门)
|
12月前
|
缓存 负载均衡 应用服务中间件
Nginx__基础入门篇
Nginx__基础入门篇
|
负载均衡 Java 应用服务中间件
【Nginx】第一章 Nginx简介
【Nginx】第一章 Nginx简介
81 0
|
9月前
|
缓存 负载均衡 应用服务中间件
Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
227 2