背景
一下子闲下来了,了解的我的人都知道我闲不下来。于是,我在思考COS之后,决定自己整一个本地的OSS,实现静态文件的访问。那么,首屈一指的就是我很熟的nginx
。也算是个小复习吧,复习一下nginx
代理静态文件。
nginx的使用场景
- 反向代理
作为中间层的服务器,将来自客户端的请求转发到对应的后端服务器上
- 动静分离
动:指的是后端处理过的数据;静:静态的资源,如图片、css、js代码。nginx
可以直接提供静态资源访问,动态的则直接转发到对应的后端服务
- 负载均衡
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
以上配置的就是轮询
的负载均衡算法还有随机
、加权轮训
、ip hash
、最小连接数
、基于URI的负载均衡
等方式,具体问题具体分析,其实很好的做好了后端之前的负载工作。对,还有一个神器keep alive
,感兴趣的可以了解一下,nginx+keep alive
, 绝配。
- 静态文件服务
nginx
其实本身就是应对高并发的场景设计的,用它代理很多静态的资源、视频、图片等,都是很好的选择。
mac上的配置
安装
brew install nginx
启动
(base) ~|⇒ brew services start nginx
==> Successfully started `nginx` (label: homebrew.mxcl.nginx)
启动了就是这个样子,就可以看到默认的访问页面。
nginx的配置文件也是超级不好找的,不过适应了就好,因为homebrew
已经提前帮我们规划好了。
# 配置文件
/opt/homebrew/etc/nginx
nginx的默认的配置文件都在这里:
(base) nginx|stable ⇒ ls
fastcgi.conf fastcgi_params.default mime.types nginx.conf.default scgi_params.default win-utf
fastcgi.conf.default koi-utf mime.types.default nginx.conf_cpy uwsgi_params
fastcgi_params koi-win nginx.conf scgi_params uwsgi_params.default
重头戏
说了这么久,我要的静态资源服务器呢?安排上。在开始之前,我们需要做一下的准备:
- 开放的端口号是什么,我这里就
8080
了,免得以后别的服务端口占用了; - 挂载的路径 我就选
~/imgs
吧,放了一些我的typora
的笔记截图
好的,现在资源规划完成了,我们开始整。
配置的过程
cp nginx.conf nginx.conf_bck
vim nginx.conf
我就直接扔出来具体的配置了,每个配置都有详细的解释:
location /downloads {
#转到的Nginx文件目录
alias /xxx/files;
#打开目录浏览功能
autoindex on;
#默认为on,显示出文件的确切大小,单位是bytes
#显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_exact_size off;
#默认为off,显示的文件时间为GMT时间。
#改为on后,显示的文件时间为文件的服务器时间
autoindex_localtime on;
#让浏览器不保存临时文件
add_header Cache-Control no-store;
#避免中文乱码
charset utf-8,gbk;
#希望请求文件是下载而不是显示内容
#add_header Content-Disposition attachment;
}
nginx重新加载配置:
/opt/homebrew/bin/nginx -s reload
访问地址:http://127.0.0.1:8080/downloads 即可看到效果:
点击文件就可以实现类似于文件预览的效果。
怎么样子,是不是很好用!直接一个nice
。
服务关闭
作为节省资源型的猿,我喜欢不用的时候关闭软件,来看看搭载了brew
的包管理器如何关闭服务。
(base) nginx|stable ⇒ brew services stop nginx
Stopping `nginx`... (might take a while)
==> Successfully stopped `nginx` (label: homebrew.mxcl.nginx)
检查一下:
ps -ef | grep nginx | grep -v grep
OK, 以上就是brew nginx
配置静态资源服务器的全部过程了。伙伴们也记得关注,这样就不会错过很多干货了。