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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
1月前
|
存储 缓存 负载均衡
Nginx入门笔记
Nginx入门笔记
129 0
|
12天前
|
监控 前端开发 应用服务中间件
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(2)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
31 1
|
12天前
|
负载均衡 前端开发 应用服务中间件
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(1)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
35 1
|
1月前
|
缓存 负载均衡 应用服务中间件
nginx(NGINX)详细下载安装及使用教程(非常适合入门)
nginx(NGINX)详细下载安装及使用教程(非常适合入门)
|
9月前
|
缓存 负载均衡 应用服务中间件
Nginx__基础入门篇
Nginx__基础入门篇
|
11月前
|
负载均衡 Java 应用服务中间件
【Nginx】第一章 Nginx简介
【Nginx】第一章 Nginx简介
72 0
|
6月前
|
缓存 负载均衡 应用服务中间件
Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
214 2
|
6月前
|
负载均衡 网络协议 应用服务中间件
当当网266买来的1399页Nginx笔记,原来我入门都不算
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
当当网266买来的1399页Nginx笔记,原来我入门都不算
|
1月前
|
监控 应用服务中间件 nginx
Nginx 简介和安装(二)
Nginx 简介和安装
94 0