Nginx 学习
本文内系统环境为 Centos 7
本文内配置实例访问域名为:http://nginx.bb.local
特点
占用内存少,性能高,支持并发高
能够实现
反向代理
负载均衡
动静分离
高可用
安装
添加 yum 源
1 | rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
安装 nginx
1 | yum -y install nginx |
设置 nginx 服务开机启动
1 | systemctl enable nginx |
常用命令
1 | 检测配置文件是否有格式错误 |
配置语法
- 每条指令都是以;结尾,指令与参数之间以空格符号分割
- 指令块以{}大括号将多条指令组织在一起
- include 语句允许组合多个配置文件以提高可维护性
- 使用#号添加注释,提高了可读性
- 使用$符号获取变量
- 部分指令的参数支持正则表达式
负载均衡
当业务访问量上升,服务器无法应对时,提高硬件性能只能解一时之忧,当前最有效的方式是部署多台服务器共同分担访问压力,这就是负载均衡。
负载均衡配置实例:
1 | upstream demo { |
反向代理
正向代理
我们通常提到的梯子,就是正向代理服务器,通过一台可以访问指定网络的服务器进行资源访问。此时客户端是知道有代理这一操作的。反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
反向代理配置实例:
1 | location /oss { |
上面的例子在访问 http://nginx.bb.local/oss/ 路径下的资源会转发到 http://game-brew.oss-cn-hangzhou.aliyuncs.com/
如下:
http://nginx.bb.local/oss/head.jpg
http://game-brew.oss-cn-hangzhou.aliyuncs.com/head.jpg
两个 url 都能访问到 head.jpg 这张图片,可以解决在 Canvas 中使用的图片资源的跨域问题
动静分离
静态资源交由 nginx 直接提供访问,减少动态内容服务器处理压力。
静态资源服务器配置实例:
1 | location ~^/(images|stylesheets|download|javascript) { |
上面代码实现了当访问路径为 images、stylesheets、download、javascript 开头时,会直接匹配_usr_file 文件夹下的文件返回。
设置 CORS
解决跨域除了做反向代理,还可以通过配置 CORS ,允许前端在满足某些条件的情况下跨域。
1 | add_header 'Access-Control-Allow-Origin' 'http://demo.bb.local'; |
开启 gzip
1 | gzip on; # 打开 |
高可用
此为高级功能,我还没学到。