关于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中的内容放到/home/zyp/kob/web中,所以我们这里nginx配置成根路径(root /home/zyp/kob/web;
)指向其。