什么是nginx
高性能http和反向代理服务器
占用内存少,并发能力强
注重效率,性能是最重要的考量
正向代理
发送请求访问,其中通过代理服务器
反向代理
将请求发送给反向代理服务器,反向代理服务器去选择转发到目标服务器获取数据,再返回客户端,暴露的是代理服务器地址,隐藏了真实服务器ip
负载均衡
将请求通过反向代理服务器平均的分配到服务器集群
动静分离
把动态页面和静态页面由不同服务器来解析,加快解析速度
常用命令
用nginx -h查看可带参数
带-s的一般跟开启关闭有关
nginx配置文件
先放图
全局块
配置属性:
worker_processes 并发处理配置
events块
配置属性:
worker_connections 最大连接数
http块
http全局快
配置属性::
文件引入,
mime-type定义
日志自定义
连接超时时间,
单链接请求数上限
server块
location参数 {
root (系统中配置文件的目录 )
alias:
location /about {
alias /opt/testdir;
}
alias是当访问localhost下的about文件,实际访问的是/opt/testdir/下的index.html
index(指定默认网页文件)
error_page
autoindex on(列出当前文件夹中的内容)
location后面的url的前缀符号表达:
}
反向代理实现
在nginx.conf(ubuntu是在sites-available)里修改serve的相关属性
server_name listen监听的反向代理服务器(中间件)
proxy_pass 要转发到的地址
listen :监听的端口
负载均衡实现
在http全局块中加upstream name
{
格式:
server 服务器ip地址:端口号;(可写多个server)
}
在location的proxy_pass中写上在http全局块中写的upstream的名字,注意要加http://的前缀
upstream中的参数(分配策略)
{
默认:轮询 每个请求按照时间顺序逐一分配,后端服务器如果down掉能自动剔除
weight:权重
ip_hash:每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
fair:按照后端服务器的响应时间分配,响应时间短的优先分配
}
动静分离实现
将请求分为动态资源请求和静态请求
静态资源:css,image等
方法一:纯粹的将动态资源和静态资源分到两个服务器上
方法二:动态和静态文件混合一起发布,通过nginx分离
方法三:通过location指定不同后缀名实现不同请求转发,设置expires参数设置浏览器缓存过期时间。(在浏览器设缓存的方式不需要取服务器端验证,减少流量开销,适用于较少更新的项目开发)