nginx

nginx介绍

为什么学习nginx

问题1: 客户端到底该给哪一台服务器发送请求

问题2:如果所有的请求发送到一个服务器

问题3:客户端发送请求,有请求静态资源和动态资源

在这里我们在客户端和服务器端加入了nginx,nginx,可以实现动静分离,nginx能够处理静态资源,不用服务器去处理。nginx会有一个负载均衡的算法,判断将请求发到哪个服务器合适。

nginx的历史

nginx是由俄罗斯人研发的,研发的目的是为了应付Rambler(俄罗斯访问量第二)网站,并且在2014年发布

nginx的特点

  • 稳定性极强 7*24小时不间断的运行下去

  • nginx提供了非常丰富的实例

  • 占用内存小,并发能力强

nginx安装

Docker安装

version: '3.7'
services:
  nginx:
    image: nginx
    restart: always
    container_name: nginx
    ports:
      - 80:80
      - 443:443
#在opt下建立文件夹
[root@localhost opt]# mkdir docker_nginx
#建立yaml文件导入上述配置
#一键启动
docker-compose up -d
#进入nginx容器中
[root@localhost docker_nginx]# docker exec -it nginx /bin/bash
#找到配置文件
root@a10bdbdf46c8:/# cd /etc/nginx/

 nginx离线安装

在有些时候nginx的安装需要在内网机器上安装,所以不能联网,需要手动安装依赖,gcc pcre等依赖,具体不在介绍

 查看配置文件

user  nginx;
worker_processes  1;
​
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
​
#以上统称全局块,worker_processes的数值越大,nginx的并发能力就越强
#error_log 代表错误日志的存放位置
#pid nginx运行的标识
​
events {
    worker_connections  1024;
}
#event块
# worker_connections,它的数值越大,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;
   -----------------conf.d/*.conf-----------------
   server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
​
       /var/log/nginx/host.access.log  main;
​
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
    }
        #server块
        #listen 代表nginx监听的端口号
        #localhost代表接收的请求ip
        #location块
        #root 将接受的请求根据 /usr/share/nginx/html去寻找静态资源
        #index 默认去上述的路径中找到index.html或者index.htm,响应给用户
        ----------------------------------------------  
}
​
#http块
#include  代表引入一个文件-》mime.types存放了大量的媒体信息
#另外一个 include 引入了/etc/nginx/conf.d/*.conf为结尾的配置文件。
​
####总共五大块
我们主要修改的就是server块,我们只需关注conf.d下的文件就可以啦

nginx反向代理

正向代理的特点

  • 正向代理服务器是客户端设立的

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

  • 最终的目的是实现突破访问权限,提高访问速度,对,目标服务器隐藏客户端的ip

反向代理

反向代理的特点

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

  • 客户端是不知道访问的是哪一台服务器

  • 使用反向代理可以达到负载均衡,可以隐藏服务器的真正ip地址

nginx实现反向代理

#准备一个目标服务器 tomcat服务器,保证直接访问
#需要一个反向代理服务器 Nginx
#修改配置文件
#基于反向代理访问到tomcat
location /{
    proxy_pass http://192.168.198.3:8080/;#请求进来转发的位置,通过访问Nginx的80端口就可以访问。
}
#需要一个客户端 浏览器
关于server块中location中的路径映射
#精准匹配
location /{
  =精准匹配,主机名后面不能带任何的字符串 /后没东西(www.baidu.com/)
}
#通用匹配
location /XXX{
  #匹配所有以/XXX开头的路径
}
#正则匹配
location ~/xxx{
    #匹配所有以/XXX开头的路径
}
#匹配开头路径
location ~^ /images/{
  #匹配所有images开头的路径
}
#匹配结尾路径
location ~*\.(gif|jpg|png){
  #匹配以gif或者jpg或者png结尾的匹配
}
​
#优先级关系
#精准匹配>正则匹配>(匹配开头和结尾)>通用匹配

nginx负载均衡

nginx默认为我们提供了三种负载均衡的策略

  • 轮询 将客户端发起的请求,平均的分配给每一台服务器

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

  • ip_hash 基于发起请求的客户端的ip地址不同,他始终会将请求发送到指定的服务器上,如果IP地址不变,会始终访问一台服务器

轮询

修改配置文件

upstream myserver{
  server 192.168.192.3:8080;
  server 192.168.192.3:8081;
}
server {
  listen 80;
  server_name localhost;
  location /{
  proxy_pass http://myserver/;  #在这块直接访问两个服务地址
  }
 
}
#轮询并不是一个一个的轮询 记得取upstream的名字不要用下划线,可能会出现一些不可名状的问题。

权重

修改配置文件

upstream myserver{
  server 192.168.192.3:8080 weight=10;  #只需要在这里加权重
  server 192.168.192.3:8081  weight=5; #加权重
}
server {
  listen 80;
  server_name localhost;
  location /{
  proxy_pass http://myserver/;  #在这块直接访问两个服务地址
  }
 
}

ip_hash

upstream myserver{
  ip_hash;     #只需要在这里加上这句话就可以,
  server 192.168.192.3:8080;
  server 192.168.192.3:8081;
}
server {
  listen 80;
  server_name localhost;
  location /{
  proxy_pass http://myserver/;  #在这块直接访问两个服务地址
  }
 
}

nginx动静分离

Nginx的并发能力就得到了一个公式

并发能力=全局块中的worker_processes *event块中的woker_connections/4或者/2

动态资源代理

location /{
procy_pass 路径;
}

静态资源代理

location /{
  root 静态资源路径;
  index 默认访问资源;
  autoindex on;#代表展示静态资源的全部内容,以链表的形式展开。
}
#添加一个数据卷映射Nginx的目录
#添加index.html

注意事项

配置location块注意 访问匹配顺序 全路径 >正则 >/ 

访问静态资源 alias 配置的是实际路径   root只适用于/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值