linux 安裝openresty并使用lua腳本轉(zhuǎn)發(fā)鑒權(quán)

前言:實(shí)際開發(fā)中,用戶上傳的圖片凄敢,我們需要對圖片做保護(hù)措施碌冶,為了不讓圖片直接暴露在外網(wǎng)無差別的訪問,圖片服務(wù)器鏈接進(jìn)行鑒權(quán)這個就顯得尤為重要了

大致上分為三步驟涝缝,如果第一步已經(jīng)配置扑庞,則可以忽略
1.配置yum源譬重,方便安裝openresty
2.安裝openresty
3.編寫鑒權(quán)l(xiāng)ua腳本

1.配置yum源

1.1 將yum下載的rpm緩存下來(已備以后其他環(huán)境直接使用)
命令:vim /etc/yum.conf

cachedirrpm包存放位置(更改為希望保存的地址)

keepcache 下載完成后是否進(jìn)行清理(更改為1)

debugleveldebug等級

logfile 日志文件存放位置

yum.conf配置信息

1.2 配置yum源文件
進(jìn)入/etc/yum.reps.d/目錄下,創(chuàng)建一個以 .repo結(jié)尾的文件
我這邊創(chuàng)建一個163的yum源,把下邊文件放入到163yum源文件截圖對應(yīng)的目錄下即可

163yum源文件

CentOS7-Base-163.repo文件下載 提取密碼:esjb
刷新配置:
yum clean all 清空本地的yum源緩存
yum repolist 重新生成元數(shù)據(jù)

2.安裝openresty

2.1通過yum形式安裝openresty

#執(zhí)行命令
yum install yum-utils 
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo 
yum install openresty 

期間有可能yum源安裝失敗嫩挤,提示無法解析163yum源域名害幅,此時需要配置linux的dns域名服務(wù)器
命令編輯:vim /etc/resolv.conf
添加內(nèi)容:
nameserver 168.95.1.1
nameserver 221.130.33.52
保存退出

2.2安裝成功后,則可以在/home/yumopenresty目錄下岂昭,查看到openresty文件

openresty文件

2.3我這邊安裝成功后以现,做了一下備份,方便其他同學(xué)下載使用
openresty.tar文件下載 提取密碼:cbva
2.4后續(xù)lua腳本會用到http網(wǎng)絡(luò)請求函數(shù)约啊,所以在/usr/local/openresty/lualib/resty默認(rèn)路徑下邑遏,添加http工具類,以供后期調(diào)用http函數(shù)

http工具類

httptool文件下載 提取密碼:pc70

3.編寫鑒權(quán)l(xiāng)ua腳本

3.1 touch命令新增touch getimage.lua文件,編寫lua腳本

--getimage.lua文件內(nèi)容
--從header中獲取token值
local headers = ngx.req.get_headers()
local token = headers["token"]
--判斷token是否為空恰矩,為空則直接400
if not token
then
ngx.exit(400)
end

local http = require "resty.http"
local httpc = http.new()
local url = "http://換成你自己請求的地址?Authorization="..token
local resStr="false" --響應(yīng)結(jié)果
local res, err = httpc:request_uri(url, {
    method = "GET",
    headers = {
        ["Content-Type"] = "application/json",
    }
})
--判斷接口返回結(jié)果狀態(tài)
if not res then
    ngx.log(ngx.WARN,"failed to request: ", err)
   ngx.exit(401)
end
--請求之后记盒,狀態(tài)碼
ngx.status = res.status
if ngx.status ~= 200 then
    ngx.log(ngx.WARN,"非200狀態(tài),ngx.status:"..ngx.status)
      ngx.exit(402)
end

--響應(yīng)的內(nèi)容 如果結(jié)果用戶id存在外傅,則重定向圖片服務(wù)器
resStr = res.body
if resStr ~= "false"
        then
--      ngx.log(ngx.ERR,"failed to request: ")
        return
        else
        ngx.exit(403)
end

3.2 配置nginx
/etc/nginx/lua/getimage.lualua文件地址纪吮,nginx觸發(fā)轉(zhuǎn)發(fā)前,去lua腳本文件鑒權(quán)萎胰,通過成功碾盟,則轉(zhuǎn)發(fā) proxy_pass http://127.0.0.1:7000/; 地址

    server {
        listen       9000;
        server_name  localhost;
        client_max_body_size 10m;
         location /busvapp/image/ {
          #日志地址
            access_log  /var/log/nginx/openrestyimage.access.log  main; 
          #錯誤日志地址
            error_log   /var/log/nginx/openrestyimage.error.log error;
            lua_code_cache off; #熱部署,每次修改lua文件技竟,不用重新加載部署
            rewrite_by_lua_file /etc/nginx/lua/getimage.lua;
            proxy_pass   http://127.0.0.1:7000/;       
        }   
        }

3.3 啟動openresty

#啟動命令
usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf`
#建立軟鏈接冰肴,為openresty下的nginx建立軟鏈(非必需)
ln -s /usr/local/openresty/nginx/sbin/nginx  /usr/sbin/nginx
#如果此前有其他版本nginx已經(jīng)占用了軟鏈接,則我們可以修改刷新軟鏈接
語法:ln –snf  [新的源文件或目錄]  [目標(biāo)文件或目錄]
ln -snf /usr/local/openresty/nginx/sbin/nginx  /usr/sbin/nginx
#建立完軟鏈接榔组,快速啟停
#啟動
service nginx start 
#停止
service nginx stop
#重啟
service nginx restart

查看nginx版本信息是否是openresty熙尉,命令:nginx -V

openresty版本信息

至此,我們的圖片鑒權(quán)服務(wù)就做好了

后期 如果我們想把openresty服務(wù)拷貝到其他服務(wù)器上的話搓扯,很簡單检痰,只需要把openresty.tar包解壓,進(jìn)入到packages文件夾

#命令安裝rpm包锨推,即可
rpm -ivh openresty-zlib-1.2.11-3.el6.x86_64.rpm
rpm -ivh openresty-pcre-8.44-1.el6.x86_64.rpm
rpm -ivh openresty-openssl111-1.1.1g-3.el6.x86_64.rpm
rpm -ivh openresty-1.17.8.2-1.el6.x86_64.rpm
openresty的rpm安裝包
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铅歼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子爱态,更是在濱河造成了極大的恐慌谭贪,老刑警劉巖境钟,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锦担,死亡現(xiàn)場離奇詭異,居然都是意外死亡慨削,警方通過查閱死者的電腦和手機(jī)洞渔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門套媚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人磁椒,你說我怎么就攤上這事堤瘤。” “怎么了浆熔?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵本辐,是天一觀的道長。 經(jīng)常有香客問我医增,道長慎皱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任叶骨,我火速辦了婚禮茫多,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忽刽。我一直安慰自己天揖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布跪帝。 她就那樣靜靜地躺著今膊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歉甚。 梳的紋絲不亂的頭發(fā)上万细,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音纸泄,去河邊找鬼赖钞。 笑死,一個胖子當(dāng)著我的面吹牛聘裁,可吹牛的內(nèi)容都是我干的雪营。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衡便,長吁一口氣:“原來是場噩夢啊……” “哼献起!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起镣陕,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤谴餐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后呆抑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岂嗓,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年鹊碍,在試婚紗的時候發(fā)現(xiàn)自己被綠了厌殉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片食绿。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖公罕,靈堂內(nèi)的尸體忽然破棺而出器紧,到底是詐尸還是另有隱情,我是刑警寧澤楼眷,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布铲汪,位于F島的核電站,受9級特大地震影響罐柳,放射性物質(zhì)發(fā)生泄漏桥状。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一硝清、第九天 我趴在偏房一處隱蔽的房頂上張望辅斟。 院中可真熱鬧,春花似錦芦拿、人聲如沸士飒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酵幕。三九已至,卻和暖如春缓苛,著一層夾襖步出監(jiān)牢的瞬間芳撒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工未桥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笔刹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓冬耿,卻偏偏與公主長得像舌菜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亦镶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354