javascript - nginx反向代理靜態(tài)資源403錯(cuò)誤?
問(wèn)題描述
部署上線測(cè)試的Node項(xiàng)目,使用nginx反向代理時(shí)出現(xiàn)靜態(tài)資源403錯(cuò)誤,本地配置正確,線上同樣的配置卻產(chǎn)生了錯(cuò)誤.配置如下:
upstream nodeblog{server 127.0.0.1:3000;keepalive 65;}server {listen 443;ssl on;server_name ;ssl_certificate ;ssl_certificate_key ;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ;ssl_session_timeout 5m;ssl_prefer_server_ciphers on;location / {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-Nginx-Proxy true;proxy_set_header Connection ’’;proxy_pass http://nodeblog;}location ~ .*.(css|js|jpg|png|gif)$ {alias '/root/nodeApp/public/';expires 3d;}}
按照提示設(shè)置了該目錄下所有文件777權(quán)限,依舊是403錯(cuò)誤
問(wèn)題解答
回答1:找到一個(gè)原因,因?yàn)槭窃趓oot權(quán)限下操作的,可能是nginx沒(méi)有該目錄的權(quán)限.個(gè)人服務(wù)器因此也沒(méi)有分配其他用戶(hù),所以打開(kāi)nginx.conf中第一行user nobody修改為user root使得nginx以root權(quán)限運(yùn)行.
這肯定不是好的解決方案,知識(shí)大致了解了,403的原因,nginx進(jìn)程沒(méi)有當(dāng)前靜態(tài)資源文件夾的相關(guān)權(quán)限,需要單獨(dú)制定nginx對(duì)該目錄的權(quán)限.希望有好的解決方案
回答2:原因是錯(cuò)誤運(yùn)用了alias指令。官方文檔
If alias is used inside a location defined with a regular expressionthen such regular expression should contain captures and alias shouldrefer to these captures (0.7.40)http://nginx.org/r/alias
試下以下配置
location ~ .*.(css|js|jpg|png|gif)$ {alias '/root/nodeApp/public/$1';expires 3d;}
相關(guān)文章:
1. 百度地圖 - Android app中準(zhǔn)備接入地圖sdk,百度VS高德哪個(gè)好一點(diǎn)?2. mongoDB批量插入文檔時(shí),運(yùn)行下面代碼,用MongoVUE查看數(shù)據(jù)庫(kù),mongo庫(kù)中只存在一個(gè)文檔?不應(yīng)該是20個(gè)嗎?3. 百度地圖api - Android百度地圖SDK,MapView上層按鈕可見(jiàn)卻不可觸,怎么解決?4. HTML5禁止img預(yù)覽該怎么解決?5. javascript - vue 父子組件傳遞數(shù)據(jù)6. html5 - 需要做一個(gè)移動(dòng)端微信頁(yè)面的小游戲,腦子里比較空希望有大神小神稍微指點(diǎn)指點(diǎn)。7. android-studio - 用Android Studio開(kāi)發(fā)基于百度位置服務(wù)的Android軟件中遇到j(luò)ar中沒(méi)有主清單屬性的問(wèn)題8. javascript - 關(guān)于圣杯布局的一點(diǎn)疑惑9. javascript - JS如何把回調(diào)閉包形參傳遞給外部環(huán)境的變量10. javascript - 如何將一個(gè)長(zhǎng)為365的數(shù)組對(duì)象按月份切割成12組?
