关于Nginx

简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

作用

反向代理服务器

  • 常见的正向代理:vpn。代理的是客户端,即无法感知前端

反向代理,代理的是服务器,(Nginx),即无法感知后端

负载均衡

负载均衡策略分为内置策略和拓展策略:

  • 内置策略:
    • 轮询:轮流向每台服务器转发请求
    • 加权轮询:不同服务器有不同的处理能力,处理能力强的服务器会被传发到更多的请求
    • ip hash:对于某个客户端,它的请求只会被固定转发到一台服务器
  • 拓展策略:天马行空,随意发挥

前后端分离

将静态资源,与动态资源分离开。有些请求是需要后台处理的,有些请求是不需要后台处理的(css ,html,js, )等文件,这些是静态资源。

安装

1、更新软件库
sudo apt-get update

2、安装
sudo apt-get install nginx

3、检查版本
nginx -v

4、检查nginx服务状态
sudo systemctl status nginx

5、启动
sudo systemctl start nginx

6、要设置 Nginx 在系统启动时加载
sudo systemctl enable nginx

7、停止
sudo systemctl stop nginx

8、重新加载
sudo systemctl reload nginx
若遇到问题,大概率是配置文件有问题:
通过sudo nginx -t检查问题

9、硬重启
sudo systemctl restart nginx

10、开机自启
sudo systemctl enable nginx

11、关闭开机自启
sudo systemctl disable nginx

配置文件

1、所有的配置文件都在/etc/nginx
2、核心配置文件是/etc/nginx/nginx.conf
3、html目录在 /var/www/html
nginx.conf是只读文件,所以不好修改
**sudo chmod 777 nginx.conf**** 将其取消只读权限**

一个模板简单的配置文件:(只配置了前端部分)

worker_processes auto;

events {
    worker_connections 1024;    # 最大并发连接数
    multi_accept on;            # 支持多个连接同时建立
}

http {
    # 定义MIME类型
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # 代理参数
    proxy_connect_timeout 6s;       # 连接超时时间
    proxy_send_timeout 10s;         # 发送超时时间
    proxy_read_timeout 10s;         # 接收超时时间
    proxy_buffer_size 16k;          # 缓冲区大小
    proxy_buffers 4 32k;            # 缓冲区个数和大小
    proxy_busy_buffers_size 64k;    # 忙碌缓冲区大小
    proxy_temp_file_write_size 64k; # 代理临时文件写入大小

    # 启用压缩,提高网站访问速度
    gzip on;
    gzip_min_length 1k;    # 最小压缩文件大小
    gzip_types text/plain text/css application/json application/javascript application/xml;

    # 定义http服务器
    server {
        listen 80;    #监听端口
        # server_name app6211.acapp.acwing.com.cn;      # 自己的域名或者ip地址(自己修改)

        # location /static/ {
        #     alias /home/zyp/kob/web/static/;
        #     expires 7d;     # 静态文件的缓存时间
        #     add_header Pragma public;       # 添加HTTP响应头
        #     add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        # }

        # 配置错误页面
        # error_page 404 /404.html;           # 404错误页
        # location = /404.html {
        #     internal;                       # 不接受外部访问
        #     root /usr/share/nginx/html;     # 404错误页文件所在目录
        # }

        # 配置重定向
        # location /old/ {
        #     rewrite ^/old/([^/]+) /new/$1 permanent;   # 将/old/xxx路径重定向为/new/xxx,返回301状态码
        # }


        # 配置代理路径
        location / {
            root /home/zyp/kob/web;
            index index.html;
            try_files $uri $uri/ /index.html;
        }

        # 配置后端代理
        # location /api {
        #     proxy_pass http:backends;   # 负载均衡转发请求的目标(在backends里面的,都是被转发的对象)
        # }

        # 负载均衡
        # upstream backends {
        #     server localhost:8080 weight=1;     #设置后端服务器的地址和权重(举例:101.43.108.196:8080 weight=1)
        #     server localhost:8081 weight=1;     #设置后端服务器的地址和权重 (举例: 60.204.248.180:8080 weight=1)
        # }
    }
}

1、try_files $uri $uri/ /index.html;的作用

location / {
            root /home/zyp/kob/web;
            index index.html;
            try_files $uri $uri/ /index.html;
        }
  • 首先,Nginx会尝试匹配 $uri,即直接查找与请求URI相对应的文件。
  • 如果未找到匹配的文件,则尝试加上"/",查找可能存在的目录,并返回该目录下的索引文件。
  • 若上述两种情况都未找到可响应的文件,则最后会提供 /home/acs/kob/web/index.html 文件作为响应内容。

一把来说,前端应用打包后的静态资源(包括但不限于HTML、CSS和JS)通常会放置在一个统一的静态资源目录下,如/dist/,然后在Nginx中配置成根路径(/)指向这个目录。
dist目录示意图
在这里,我们把dist中的内容放到/home/zyp/kob/web中,所以我们这里nginx配置成根路径(root /home/zyp/kob/web;)指向其。

posted @ 2024-04-20 16:16  beiyuan666  阅读(21)  评论(0编辑  收藏  举报