前端必会nginx知识

253 阅读2分钟

介绍

nginx是一款轻量级的HTTPweb服务器

特点

  • 支持反向代理
  • 支持ssl
  • 高并发 (负载均衡)
  • 热部署(修改配置不用停止程序)
  • 扩展性高
  • 开源许可证BSD

反向代理

  • 代理的对象是服务器,客户端通过访问nginx这个代理服务器来和服务器之间通信
  • 隐藏了目标服务器的真实地址
location /api{
  proxy_pass http://backend/xxx
}

gzip

  • 是一种数据压缩格式,对于纯文本可以压缩到40%
  • 在网络传输中,可以节省带宽
  • 需要nginx1.1及以上版本
location ~ .*\. (html|js|css)$ {
  gzip on; #启用压缩    
  gzip_min_length 1k; # 超过1K的文件才压缩    
  gzip_http_version 1.1; # 启用gzip压缩所需的HTTP最低版本    
  gzip_comp_level 9; # 压缩级别,压缩比率越高,文件被压缩的体积越小    
  gzip_types text/css application/javascript; # 进行压缩的文件类型    
  root /data/www/html;
}

配置https

server {
  listen 443 ssl;
  ssl_certificate      /home/ca/2197624_btmcheck.com.key;#服务器上的证书地址
  ssl_certificate_key  /home/ca/2197624_btmcheck.com.pem;#服务器上的证书地址

  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers  on;
}

访问控制

下面是基于ip的访问控制

server { 
  location ~ ^/index.html {  # 匹配 index.html 页面 除了 127.0.0.1 以外都可以访问  
    deny 127.0.0.1;  
    allow all; 
  }
}

负载均衡

通过up_stream配置开启

状态

down 表示这台机器不参与负载均衡

back 当其他机器不可访问时作为备用机器

max_fails 允许请求失败的次数,若到达就会休眠

fail_timeout 经过max_fails次失败后,服务器的暂停时间,默认为10s

max_conns 限制每个服务器的最大接收连接数

策略

轮询 默认是轮询机制,按照时间顺序分配访问

weight 设置权重,默认weight=1,权重值越大,分配的访问量越多

ip_hash 按访问ip的hash结果分配请求,这样每个访客ip固定访问一个后端服务器,可以解决session的问题

fair 根据服务器的响应时间分配请求,时间短的优先分配

url_hash 按访问url的hash结果分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效

# upstream 指定后端服务器地址
# server 中会将 http://webcanteen 的请求转发到 upstream 池中
upstream webcanteen {
  server 127.0.0.1:44 down;
  server 127.0.0.1:55 backup;
  server 127.0.0.1:66 weight=10;    
  server 127.0.0.1:77 max_fails=3 fails_timeout=10s;    
  server 127.0.0.1:88 max_conns=1000;
  fair;
}
server {
 location / {
   proxy_pass http://webcanteen
 }
}

隐藏版本号

http {
  server_tokens off
}

常用指令

rpm -ql nginx查看nginx配置文件目录

nginx -s stop 停止nginx服务

nginx -s reload 重启nginx服务

ab -n 1000 -c 5000 http://127.0.0.1/ apache自带的压测工具,-n 总共的请求数,-c并发的请求数

参考