首頁 > 軟體

Nginx設定靜態檔案服務從入門到精通

2021-03-16 10:02:12

作者:三十三重天

部落格:http://https://www.cnblogs.com/foxhappy/p/www.zhouhuibo.club

通過學習和分享的過程,將自己工作中的問題和技術總結輸出,希望菜鳥和老鳥都能通過自己的文章收穫新的知識,並付諸實施。

引言

使用Nginx佈署靜態檔案服務,Nginx服務得先有才能進行後續的事情。如果有同學不會部署的,可以參考我的上一篇文章yum安裝Nginx全流程指南。已經部署好的同學可以直接看下面的內容了。

Nginx 場景介紹

Nginx的設定繁多且複雜,但是實際的使用場景其實無非就是這麼幾個

  • 正向代理
  • 反向代理
  • 負載均衡
  • 動靜分離

針對不同的應用場景有不同的組態檔,在未來我會針對不同的場景依次說明並給出對應的組態檔。在此留個坑,哈哈。

開始設定

回到當前主題,我們是要設定一個靜態檔案服務供使用者端存取。

一、linux系統定義一個存取目錄

在home目錄新建一個files資料夾,裡面存放檔案供使用者端存取

mkdir -p /home/files

二、Nginx 新增一個Location將剛才的目錄暴露出去

如果你是用yum安裝nginx的,那在etc/nginx/nginx.conf目錄下會有一個檔案default.conf

default.conf是預設組態檔,暴露80埠,預設頁面為index.hmtl

cat default.conf可以看到如圖所示內容,新增紅框中的設定到檔案中

    location /download {
        alias   /home/files/;
        autoindex on;
    }

這一段的意思是增加127.0.0.1:80/download的解析,路徑指向/home/files資料夾。 autoindex on;代表開啟目錄瀏覽

三、檢驗設定並重啟Nginx

1、檢驗組態檔是否正確

nginx -t

2、重啟nginx

nginx -s reload

其他設定項

server {
        listen       80;

     location /download {
         #轉到的Nginx檔案目錄
         alias /home/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; 
        }
}

部署過程中出現的問題

404

如果出現404錯誤,大概率可能是組態檔出錯。

有可能是location後多加一個左斜槓/

也有可以是指向的目錄地址不存在

403

403 Forbidden 代表被禁止的,一般是三種情況導致的

1、目錄許可權不足

檢查目錄許可權。許可權不足就將許可權加上

chmod -R 755 /home/files

2、nginx.conf使用者許可權問題

vim /etc/nginx/nginx.conf

把 user 使用者名稱 改為 user root 或 其它有高許可權的使用者名稱稱即可

3 、Centos中的selinux設定未關閉

檢視SELinux狀態:

如果SELinux status引數為enabled即為開啟狀態

/usr/sbin/sestatus -v 

如何關閉?

1、臨時關閉(不用重啟機器):

setenforce 0

2、永久關閉(要重啟機器)

vim /etc/selinux/config

將SELINUX=enforcing改為SELINUX=disabled

END

歡迎關注公眾號 程式設計師工具集


IT145.com E-mail:sddin#qq.com