avatar

目录
Nginx-学习笔记

Nginx

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务

基本概念

正向代理

正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。

反向代理

反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

负载均衡

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

动静分离

动静分离:动态资源(jsp、ftl、thymeleaf)与静态资源(js、css、img)分开部署。

前后分离

前后分离:接口与视图分开部署,专业的人做专业的事情。例如:前端使用vue.js ,后端只需要提供接口即可。前端项目与后端项目都是独立部署的。

高可用

为了解决Nginx可能会随时宕机导致服务器无法访问。

因此出现了配置两台Ngix来放置其中一台宕机导致服务器崩溃。并且对外提供一个虚拟IP地址

Nginx开始

Nginx安装

Windows下只需要再官网下载解压即可使用

Linux则需要安装一些依赖

Nginx基本指令

start nginx开启nginx

nginx -s stop:stop表示立即停止nginx,不保存相关信息

nginx -s quit:quit表示正常退出nginx,并保存相关信息

nginx -s reload:重启(因为改变了配置,需要重启)

注意:

windows的Nginx必须去安装目录下打开nginx.exe不然会报错找不到文件

Nginx配置文件

虚拟主机的配置server

nginx
1
2
3
4
5
6
7
8
9
10
server {
listen 80; # 监听的端口
server_name 127.0.0.1; # 域名可以有多个,用空格隔开

location /nginxstatus {
index index.html;
proxy_pass http://www.baidu.com; # 反向代理到此服务器

}
}

Nginx代理

反向代理实例

conf/nginx.conf中,再HTTP对象中添加此配置

nginx
1
2
3
4
5
6
7
 server {
listen 9000;
server_name localhost;
location / {
proxy_pass https://www.bilibili.com;
}
}

当我们访问localhost:9000时,会反向代理到bilibili

语法

location中又几个参数

nginx
1
2
3
location [ = | ~ | ~* | ^~ ] uri {
....
}
  • =:用于匹配不含正则表达式的uri,uri和请求字符串要严格匹配
  • ~:用于匹配包含正则表达式的uri,并且区分大小写
  • ~*:用于匹配包含正则表达式的uri,并且不区分大小写
  • ^~:用于匹配不含正则表达式的uri,要求Nginx服务器找到标识uri和请求字符串匹配最高的loaction

Nginx负载均衡

负载均衡实例

再HTTP对象中添加

nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
upstream serverName {
# ip_hash
server ipAddress:port weiht=5;
server ipAddress:port;
server ipAddress:port;
# fair
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://servarName;
}
}

当访问localhost:80时请求会被轮流分配给已经配置好的服务器

负载均衡的几种分配服务器的策略

  • 轮询:每个请求按时间顺序逐一分配到不同的服务器,默认

  • weight:weight代表权重默认为1,权重越高被分配的客户端越多

  • ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器

  • fair:按服务器响应时间来分配请求,响应时间短的有限分配

Nginx分离

动静分离实例

nginx
1
2
3
4
5
6
7
8
9
location /www/ {
root /data/;
index index.html index.html
}

location /image/ {
root /data/;
autoindex on; # 列出文件夹中的文件
}

设置缓存(需自行百度)

Nginx配置高可用集群

Nginx高可用实例

  • 需要两台服务器
  • 两台服务器都需要安装Nginx和keepalived

Nginx原理

Nginx启动会又一个master主进程和一个或以上的worker进程

当client发送请求给master,master地下的worker就会争抢任务,抢到任务的worker就会把内容返回给client

一个master多个worker的好处

  • 可以使用nginx -s reload热部署,利用nginx进行热部署操作
  • 每个worker是独立的进程,如果一个worker出现问题,其他worker会继续进行争抢,实现请求过程,不会造成服务器中断
  • CPU有多少核就设置多少个worker最为合适

连接数worker connection

  • 发送请求,占用worker的连接数要么是2个或者4个。一次请求和响应就是2个连接数

  • 普通的静态访问最大并发数是 worker_connections * worker_process / 2

  • 如果是HTTP作为方向代理来说,最大并发数一个是worker_connections * worker_process / 4

文章作者: 青空
文章链接: https://gitee.com/AIR-ZRB/blog/2020/04/18/Nginx-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 青空
打赏
  • 微信
    微信
  • 支付寶
    支付寶