nginx
1.虚拟机安装与配置
准备:
- Vmware、Virtualbox、P
- CentOS 7.4
2.nginx的多进程模型

3.nginx的基础配置
conf
worker_processes 1; # 开启进程数
events {
worker_connections 1024;
}
http {
include mime.types; # 引入其他的配置文件
default_type application/octet-stream; # 以二进制流的形式返回给客户端
sendfile on; #
keepalive_timeout 65; # 保持连接超时的时间
# 虚拟主机 vhost
server {
listen 80; # 监听的端口号
server_name localhost; # 域名、主机名
location / {
root html; #相对路径,相对于nginx的主目录下
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}4. 反向代理

5. 负载均衡
基本配置
雨露均沾,一人一下
upstream httpds { server 192.168.44.102:80; server 192.168.44.103:80; }
conf
worker_processes 1; # 开启进程数
events {
worker_connections 1024;
}
http {
include mime.types; # 引入其他的配置文件
default_type application/octet-stream; # 以二进制流的形式返回给客户端
sendfile on; #
keepalive_timeout 65; # 保持连接超时的时间
upstream httpds {
server 192.168.44.102:80;
server 192.168.44.103:80;
}
# 虚拟主机 vhost
server {
listen 80; # 监听的端口号
server_name localhost; # 域名、主机名
location / {
root html; #相对路径,相对于nginx的主目录下
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}负载均衡策略之权重
权重的概念很简单,假设10次请求,会有8次请求到第一个服务器,会有2次请求到第二个服务器
轮询:
缺点: 无法保持会话,例如需要登录的场景,我这边登陆了,轮询到另一台服务器,结果另一台服务器没有token,导致重复登录
conf
upstream httpds {
server 192.168.44.102:80 weight=8;
server 192.168.44.103:80 weight=2;
}down
down 可以理解为不参与负载均衡,例如这台服务器出现故障了,添加done,请求不会被转发到nginx服务器
conf
upstream httpds {
server 192.168.44.102:80 weight=8 down;
server 192.168.44.103:80 weight=2;
}backup
backup 就是备用服务器,当102服务有问题时,就会转发到103服务器
conf
upstream httpds {
server 192.168.44.102:80 weight=8;
server 192.168.44.103:80 weight=2 backup;
}ip_hash
根据来源的ip判断是否请求到相同的服务器
缺点: 如果ip变了,那么也无法保持会话
least_coon
最小连接数
也无法保持会话
url_hash
也无法保持会话
fair
根据后端服务器响应时间转发请求
缺点: 可能造成流量倾斜
6. 动静分离的原理及使用
动静分离的本质就是把静态资源提前放在nginx服务器上,少了一个环节
动静分离的配置
conf
localtion ~*/(js|img|css) {
root html;
index index.html index.htm
}7. URLRewrite 伪静态
下方是一个静态的配置选项,整体的逻辑大概就是将访问的真实的url隐藏换为其他的url路径
匹配上rewirte后面的路径后,会转发到后面的路径上
conf
location / {
rewrite ^/2.html$ /index.jsp?pageNum=2 break;
}
基本语法:
rewrite <regex> <replacement> [flag] :
关键字 正则 替代内容 flag标记
关键字: 其中关键字error_log不能改变
正则: perl兼容正则表达式语句进行规则匹配
替代内容: 将正则匹配的内容替换成replacement
flag标记: rewrite支持的flag标记
rewrite参数的标签段位置:
server,location,if
flag标记说明:
last: #本条规则匹配完成后,继续向下匹配新的location URL规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect # 返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址