nginx

一 Nginx介绍

1.1 为什么要学习Nginx

问题1: 客户端到底要将请求发送那台服务器

问题2:所有客户端的请求都发送给了服务器1

问题3:客户端发送的请求可能是申请静态资源的,也有可能是访问动态资源的

1.2 Nginx介绍

特点:

1.稳定性极强,7*24小时不间断运行

2.Nginx提供了非常的配置实例

3.占用内存小,并发能力强

二 Nginx安装

2.1 安装

version: '3.1'
services: nginx:restart: alwaysimage: nginx:1.19.2container_name: study_nginxports:- 80:80

2.2 Nginx配置文件

nginx.conf

user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;# 以上统称全局块
# worker_processes 它的数值越大,Nginx的并发能力越强
# error_log 代表Nginx的日志文件存放位置events {worker_connections  1024;
}# events块
# worker_connections 默认1024  数字越大,Nginx的并发能力越强http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}# http块
# 上面的include 代表引入一个外部文件 ->mime.types中存放了大量的媒体类型
# 下面的include /etc/nginx/conf.d/*.conf; 引入了conf.d目录下的以.conf的配置文件

Server块

    server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}
# location 块
# root 将接收到的请求根据/usr/share/nginx/html去查找静态资源
# index 默认去上述的路径中找到index.html或者index.htmerror_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
# server块
# listen 代表Nginx的监听端口号
# localhost 代表Nginx接收请求的ip
# 

三 Nginx的反向代理

3.1 什么是正向代理:

1.正向代理服务时由客户端设立的

2客户端了解代理服务器和目标服务器都是谁

3.帮助实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址

3.2 什么是反向代理

1.反向代理服务器是配置在服务端的

2.客户端是不知道到底访问的那一台服务器

3.达到负载均衡,并且可以真正的隐藏ip地址

3.3 基于Nginx实现反向代理

1.准备一个目标服务器

启动一个tomcat服务器8080端口,在ROOT目录下放一个index.html页面

2.编写nginx配置文件通过nginx访问tomcat容器,实现反向代理

修改conf.d目录下的default.conf文件

server{listen 80;server_name localhost;#基于反向代理访问到nacoslocation = /index {proxy_pass http://47.112.174.148:8848/nacos;}# 基于反向代理访问百度location ^~ /test/ {proxy_pass http://47.112.174.148:8081;}#基于反向代理访问到tomcat服务器location / {proxy_pass http://47.112.174.148:8080;}
}

然后访问nginx的80端口,如果页面展示的是tomcat的index.html页面,说明nginx反向代理成功

3.3.1 关于nginx的location路径映射

优先级关系:

(location = ) > (location /xxx/yyy/zzz) > (location ^~) > (location ~ , ~*) > (location/起始路径) > (location /)

# 1. = 匹配
location = / {# 精准匹配,主机名后面不能携带任何字符串
}# 2. 通用匹配
location /xxx {# 匹配所有以/xxx开头的路径
}# 3. 正则匹配
location ~ /xxx {# 匹配所有以/xxx开头的路径,与2的效果一样 但是比2中优先级高些
}# 4. 匹配开头路径
location ^~/images/ {# 匹配所有以/images开头的路径
}# 5 匹配文件路径
~*\.(gif|jpg|png){# 匹配以gif或者jpg或者png为结尾的路径
}

四 Nginx的负载均衡

Nginx为我们提供了三种负载均衡的策略

  1. 轮询:

    将客户端发起的请求,平均分配给每个服务器,轮着处理请求

  2. 权重:

    会将客户端的请求,根据服务器的权重值不同,分配不同的请求数量给权重不同的服务器

  3. ip_hash

    基于发起请求的客户端IP地址不同,他会始终将请求发送到指定的服务器上.

4.1 轮询

修改conf.d目录下的default.conf文件

# 在server块外面声明upsteam  fs-server是我自己取得名字 自定义名称不要加下划线_
# server 指定服务地址,端口
upsteam fs-server {server 47.112.174.148:8080;server 47.112.174.148:8081;.....
}server{listen 80;server_name localhost;#基于反向代理到我们上面upsteam指定的服务名字,默认使用轮询location / {proxy_pass http://upsteam的名字/;}
}

4.2 权重

修改conf.d目录下的default.conf文件

# 在server块外面声明upsteam  fs-server是我自己取得名字 自定义名称不要加下划线_
# server 指定服务地址,端口
# weight=值越大权重约定,被访问的几率大些
upsteam fs-server {server ip:port weight=10;server ip:port weight=2;.....
}server{listen 80;server_name localhost;#基于反向代理到我们上面upsteam指定的服务名字,默认使用轮询location / {proxy_pass http://upsteam的名字/;}
}

4.3 ip_hash

修改conf.d目录下的default.conf文件

# 在server块外面声明upsteam  fs-server是我自己取得名字 自定义名称不要加下划线_
# server 指定服务地址,端口
# ip_hash 表示负载均衡使用ip_hash 当某个ip访问nginx的时候,后续始终将请求发送到指定的服务器上.
upsteam fs-server {ip_hash;server ip:port;server ip:port;.....
}server{listen 80;server_name localhost;#基于反向代理到我们上面upsteam指定的服务名字,默认使用轮询location / {proxy_pass http://upsteam的名字/;}
}

五 Nginx的动静分离

Nginx的并发能力公式:

Nginx的配置文件中worker_processes和events块的worker_connections相乘除以4或者2,最终的结果就是nginx的并发能力

worker_processes*worker_connections/4|2=Nginx最终的并发能力

动态资源需要/4,静态资源/2

Nginx通过动静分离,来提升Nginx的并发能力,更快的给用户响应

5.1 动态资源代理

# 配置如下
location / {proxy_pass ip;
}

5.2 静态资源代理

# 配置如下
location / {root 静态资源路径;index 默认访问路径下的资源;autoindex on: # 代表展示静态资源全部的内容,以列表的形式展开.
}

测试案例,先修添加一个index.html和1.jpg静态资源

六 Nginx集群

单点故障,导致整个程序的崩溃,提升高可用

Nginx的动态代理,负载均衡,动静分离的简单使用相关推荐

  1. Nginx 反向代理 负载均衡 动静分离 高可用 原理

    1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...

  2. Nginx 方向代理/负载均衡/动静分离/高可用

    一,反向代理 正向代理:正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端.这里客户端是要进行 ...

  3. HAproxy负载均衡动静分离实现及配置详解

     HAproxy负载均衡动静分离实现及配置详解 HAproxy的介绍 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAP ...

  4. Caddy - Web服务器的新秀 高性能 配置简单 动态代理 负载均衡

    Caddy - Web服务器的新秀 高性能 配置简单 动态代理 负载均衡 据Netcraft今年5月份放出了一篇统计文章中,Apache.Nginx和微软的IIS分别以45.61%.20.22%和7. ...

  5. ngixn+tomcat负载均衡 动静分离配置 (nginx反向代理)

    文章目录 Tomcat主要配置文件 Nginx负载均衡实现原理 实验环境 动静分离配置 创建静态页面 配置动态页面 图片动静分离 Tomcat主要配置文件 bin:存放启动和关闭Tomcat脚本 co ...

  6. Nginx快速入门(安装 负载均衡 动静分离 主备 原理)

    什么是Nginx? Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ra ...

  7. nginx+apache实现负载均衡+动静分离配置(编译安装)

    一.编译安装nginx cd /usr/local/src wget http://nginx.org/download/nginx-1.6.3.tar.gz tar -zxvf nginx-1.6. ...

  8. 四层负载均衡 动静分离和资源分离 Rewrite rewrite伪静态实例

    文章目录 四层负载均衡 四层负载均衡特点 查看四层负载均衡语法 四层负载均衡配置 优化配置文件 四层负载均衡日志配置 nginx的TCP负载均衡---端口转发 动静分离 单台的动静分离 多台机器动静分 ...

  9. Nginx(二) 反向代理负载均衡

    1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...

最新文章

  1. 基于单个xml的数据库
  2. 25台机器人=18名搬运工,我在徐福记工厂,围观了给旷视河图的落地现场
  3. python免费试听-哈尔滨Python人工智能课程免费试听
  4. numpy中的ndim、shape、dtype、astype
  5. 配置vbox fedora虚拟机的VboxGuestAdditions
  6. 【学术相关】如何避免博士延期毕业?
  7. Spark 下操作 HBase
  8. 40.Node.js Web 模块
  9. 网管型工业交换机如何提高网路流量过滤?
  10. Python 中的 while循环 和 for... in ...循环
  11. a标签的href和onclick的区别
  12. 变量的语法扩展(JS)
  13. npm login 登录失败,报E500 Internal Server Error - PUT https://registry.npm.taobao.org/-/user/org.couchdb
  14. VS2019 + Qt ERROR MSB4181 QtRunwork 返回了false,但未记录错误
  15. 网页实现语音对讲_GB28181实现摄像头语音对讲 - web音频采集调用示例
  16. surfer画世界频率分布图(等高线、地点标注)
  17. 文本区 JTextArea 的使用
  18. Linux基础知识点总结
  19. GlobalMapper20脚本应用(数据批量自动化处理)
  20. SNAT、DNAT、MASQUERADE的区别

热门文章

  1. ZOJ 2702 Unrhymable Rhymes(DP)
  2. 矩阵快速幂 学习笔记
  3. 区分Activity的四种加载模式(转)
  4. VS2005发布网站问题及aspnet_merge.exe”已退出,代码为 1的错误
  5. android ProgressBar 自定义进度条颜色
  6. vue wabpack 切换开发环境 和生成环境 的接口地址
  7. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:移除默认的列表样式
  8. 51nod 1267 4个数和为0
  9. 解决No enclosing instance of type * is accessible
  10. 【SSH】——Struts2中的动态方法调用(一)