Nginx
安装
# 安装Nginx所需要的依赖
yum install pcre-devel zlib zlib-devel openssl openssl-devel
# 解压Nginx
# 到nginx目录
./configure
make install
cd /usr/local/nginx
# 启动nginx
cd sbin
./nginx
# 关闭
./nginx -s quit / stop
quit 停止外面请求,然后将nginx里面的请求处理完在关闭
stop 直接退出什么都不管
配置文件
nginx.conf
# 全局块设置
# 哪些用户可以操作nginx 参数一 用户 参数二 用户组
user nobody;
# 工作进程个数,越多越好。但是推荐设置成与服务器核心数一致或二倍
worker_processes 4;
# 错误日志存放位置
error_log logs/error.log warn;
# 进程号,不用改
pid /run/nginx.pid;
# event块设置
events {
# 设置多路io复用,提高效率
use epoll;
# 设置每一个工作进程的最大链接数
worker_connections 1024;
}
# http块
http {
# 引入浏览器解析的类型
include mime.types;
default_type mime.types.default;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
# 访问成功的时候记录日志的位置
access_log logs/access.log main;
# 启用文件的零拷贝传输。
sendfile on;
# 禁用 TCP 的发送缓冲,默认情况下开启以提高性能。
tcp_nopush on;
# 禁用 TCP 的 Nagle 算法,默认情况下开启以降低延迟。
tcp_nodelay on;
# 客户端与 Nginx 之间保持活动连接的超时时间。
keepalive_timeout 65;
# 启用 Gzip 压缩
gzip on;
# 等级越高越好,但是消耗cup性能
gzip_comp_level 2;
gzip_min_length 1000;
# 压缩类型
gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# include /etc/nginx/conf.d/*.conf; include 引入其他配置文件
include demo.conf;
}
demo.conf
server {
# 服务监听端口
listen 80;
server_name *.*;
location / {
return 200 '{"message": "Success"}';
}
# 开启浏览器缓存
location /static {
expires 7d; # 设置文件的过期时间为 7 天
}
location ~* \.(js|css)$ {
expires 30d; # 设置 JavaScript 和 CSS 文件的过期时间为 30 天
}
}
代理
正向代理
反向代理
server {
listen 80;
server_name *.*;
location {
# 反向代理
proxy_pass http://ip:port;
}
}
负载均衡
轮询
upstream 集群名 {
server ip:port;
server ip:port;
server ip:port;
}
server {
listen 80;
server_name *.*;
location {
# 负载均衡 默认就是轮询
proxy_pass http://集群名;
}
}
轮询 + 权重
upstream 集群名 {
# weight = x 值越高表示当前服务器被选中的概率越大
server ip:port weight=10;
server ip:port;
server ip:port;
}
server {
listen 80;
server_name *.*;
location {
# 负载均衡
proxy_pass http://集群名;
}
}
ip_hash
upstream 集群名 {
# 根据访问的ip计算出访问哪个一个服务器,保证只要ip没变一直都是访问同一个服务器
ip_hash;
server ip:port;
server ip:port;
server ip:port;
}
server {
listen 80;
server_name *.*;
location {
# 负载均衡
proxy_pass http://集群名;
}
}
注意:下面两种需要额外的依赖
url_hash
upstream 集群名 {
# 根据访问的ip计算出访问哪个一个服务器,保证只要ip没变一直都是访问同一个服务器
url_hash;
server ip:port;
server ip:port;
server ip:port;
}
server {
listen 80;
server_name *.*;
location {
# 负载均衡
proxy_pass http://集群名;
}
}
fair
upstream 集群名 {
# 判断当前哪一个服务器响应时间最短就选择哪一个
fair;
server ip:port;
server ip:port;
server ip:port;
}
server {
listen 80;
server_name *.*;
location {
# 负载均衡
proxy_pass http://集群名;
}
}
安装拓展模块
# 到nginx解压包下
./configure --prefix=/etc/nginx --add-module=fair模块路径
make
# 到objs目录下
mv /usr/local/nginx/sbin/nginx nginx.bak
cp nginx /usr/local/nginx/sbin/
跨域
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' '*';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
...
}
限流
漏桶
控制访问的速率
http {
# 配置请求速率限制 请求不能超过10m 每秒10个请求
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
server {
...
location / {
# 应用请求速率限制 burst表示设置一个大小为1的缓冲区,将超过的访问频次方法到缓冲区中 nodelay 如果缓冲区超过了直接返回503 没有设置就等待排队
limit_req mylimit burst=5 nodelay;
}
}
}
令牌桶
处理突发的请求数量
http {
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $binary_remote_addr zone=perserver:10m;
server {
...
location / {
# 应用连接数限制 限制单个ip最多能链接10个连接
limit_conn perip 10 nodelay;
# 能处理的并发连接总数
limit_conn perserver 100 nodelay;
...
}
}
}
部署一个Vue项目
标签:http,nginx,ip,server,Nginx,location,port From: https://blog.51cto.com/u_15497049/7141654