介绍
nginx是一款轻量级的HTTP的web服务器
特点
- 支持反向代理
- 支持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并发的请求数