亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

nginx轉(zhuǎn)發(fā)請求403的原因 nginx403錯誤怎么解決


nginx轉(zhuǎn)發(fā)請求403的原因 nginx403錯誤怎么解決

文章插圖
每一次故障排查都是一筆財富,各種狗血經(jīng)過不表,解決問題之后的那種滿足是不可替代的 。
背景發(fā)布系統(tǒng)架構(gòu)圖簡化如下:
發(fā)布架構(gòu)圖
管理員通過Jenkins調(diào)用“發(fā)布程序(代號varian,以下簡稱varian)”,發(fā)布程序會進(jìn)行一系列的初始化操作,完成后生成Docker鏡像上傳到Docker倉庫,容器集群更新鏡像,用戶通過負(fù)載均衡訪問我們的容器集群 。
老的varian采用shell+python開發(fā),配合Jenkins(jdk1.7)進(jìn)行發(fā)布,因內(nèi)部項目較多,寫了很多兼容腳本,代碼比較亂 。
我們計劃對varian進(jìn)行重構(gòu),完全采用python開發(fā),各個功能模塊化,不同類型的項目用樂高的思想拼裝模塊部署發(fā)布,降低耦合 。
并將jenkins升級到最新版本,jdk同樣升級到1.8 。新的varian已經(jīng)開發(fā)完成,現(xiàn)在開始部署測試了,故事就由此開始 。
為了降低對現(xiàn)有項目的影響決定重新部署一套新的環(huán)境,完全測試通過后將老環(huán)境廢棄,直接啟用新環(huán)境,新環(huán)境信息如下:
系統(tǒng):Debian8語言:Python3.4JDK1.8 + Jenkins2.134故障處理過程解決nginx訪問403的問題通過 Jenkins 調(diào)用varian正常部署了一個靜態(tài)項目(純html,css,js等靜態(tài)資源),通過負(fù)載均衡訪問容器集群(參考上邊架構(gòu)圖),發(fā)現(xiàn)頁面樣式無法加載,瀏覽器按F12調(diào)出控制臺發(fā)現(xiàn)個CSS文件返回403狀態(tài):
chrome F12調(diào)試
web服務(wù)用的nginx,腦海里迅速過了一遍什么情況下nginx會返回403:
nginx配置了白名單,client端訪問的IP不在白名單內(nèi)
訪問的路徑是個目錄,而nginx配置了禁止列目錄
訪問的路徑是個文件,但nginx服務(wù)配置的用戶和用戶組對文件沒有讀取權(quán)限
目錄索引index 配置錯誤,例如你的目錄下只有index.html,你卻配置了index.shmtl或index.php等等
index index.shtml index.php;常見的有以上問題會導(dǎo)致nginx返回403,迅速排查了一下,發(fā)現(xiàn)就是權(quán)限的問題導(dǎo)致的,nginx配置的用戶和用戶組為www-data,而css文件的屬主屬組都是root,且其他用戶沒有任何權(quán)限:
這里再詳細(xì)講解下linux下的文件權(quán)限,以上邊的csl.css文件為例:
-rw-r----- 1 root root 7.9K Jul 24 12:34 csl.css以空格分割
第一段-rw-r——-10個字符定義了文件的權(quán)限第一個字符,這里為-代表這是一個文件,還會看到像d代表目錄、l代表連接剩下九個字符,每三個一組,第2-4個字符代表屬主權(quán)限,第5-7個字符代表屬組權(quán)限,第8-10個字符代表其他用戶的權(quán)限其中每一組三個字符分別為r、w、x,用數(shù)字表示r=4、w=2、x=1,分別代表讀、寫、執(zhí)行權(quán)限,如果這個字符有值表明有這個權(quán)限,例如上邊css文件的權(quán)限就為屬主有rw讀寫權(quán)限,屬組只有r權(quán)限,其他用戶沒有權(quán)限第二段為一個數(shù)字,表示文件的連接數(shù)第三段root表示用戶的屬主為root第四段root表示用戶的屬組也為root第五段則表示文件大小后邊三段為修改時間最后一段為文件名tomcat8 UMASK經(jīng)過反復(fù)測試,發(fā)現(xiàn)我直接在linux下通過控制臺執(zhí)行python腳本的方式發(fā)布部署最終文件權(quán)限正常,但是同樣的腳本經(jīng)過Jenkins執(zhí)行后權(quán)限就不對了 。
控制臺執(zhí)行跟Jenkins執(zhí)行有什么區(qū)別?賬號不一樣啊,遂把jenkins項目、tomcat文件都改成屬主屬組都為root重新執(zhí)行,發(fā)現(xiàn)還是一樣的結(jié)果 。
再想想還有哪里不對,這個css文件是程序生成的,生成的文件權(quán)限不對,umask!這個詞突然蹦出來,對,應(yīng)該就是umask,他控制了生成新文件的權(quán)限 。
簡單介紹下什么是umask:
umask值用來設(shè)置用戶在創(chuàng)建文件時的默認(rèn)權(quán)限,跟設(shè)置文件權(quán)限命令chmod是相對的,總共四位,不過我們通常只用后三位,同樣對應(yīng)屬主屬組以及其他用戶的權(quán)限,例如你的賬號umask值為0022(可直接通過umask命令查看) 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: