背景
一下子閑下來了,了解的我的人都知道我閑不下來。于是,我在思考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或者GBautoindex_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
配置靜態資源服務器的全部過程了。伙伴們也記得關注,這樣就不會錯過很多干貨了。