修改Nginx配置返回指定content-type的方法詳解

roc_guo發表於2022-10-08
一、我們遇到了什麼問題?

今天前端的同學向我請教了一個Nginx服務配置的問題。我作為組裡的底層開發,當然是對此類問題還是有信心的。因為我私下裡對Nginx也是學習了一點,再不濟透過豐富的google經驗,解決此類配置問題也是不在話下的O(∩_∩)O。但是問題並沒有我想象的那麼簡單,花費了我不少時間( ╯□╰ )。不多廢話了,直接上需求。

Nginx配置中一般根據conf/mime.types檔案中配置來根據副檔名(副檔名對大小寫不敏感)指定響應頭中的content-type欄位。mime.types檔案中主要使用了types配置,如下面配置就表明*.css檔案的響應頭中conntent-type: text/css

types {
    text/css                                         css;
}

但是現在我們不想使用預設配置中的types規則,需要指定css檔案返回特定的conntent-type欄位(比如加入指定編碼引數conntent-type: text/css; charset:utf-8),這時候應該如何配置呢?

二、解決方法

走過的彎路(想直接看答案的同學可以跳過):

  • 使用add_header指令,此時新增了2行conntent-type配置
  • 搜尋修改HTTP響應頭,需要新增headers-more-nginx-module
  • 最後還是透過Nginx官方文件找到了好的解決方案()

    要指定某個location塊對所有的請求返回相同的MIME型別"application/octet-stream",以下配置可以被使用:

location /download/ {
    types        { }
    default_type application/octet-stream;
}

簡要分析以下以上兩行指令做了什麼,第一行指令設定types配置為空(相當於取消了預設的types配置),第二行指令就簡單了指定了default_type。有了以上2行配置,那麼我們就可以使用location塊的正則匹配功能指定css檔案返回指定content-type了。

location ~ .*\.css$ {
     types { } default_type 'text/css; charset:utf-8';
}

怎麼樣,是不是看起來很簡單?但是我就是沒有在中文網際網路上搜尋到有用的答案(也有可能是我搜尋的關鍵字不對),所以在此記錄一下,希望對大家有幫助。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2917159/,如需轉載,請註明出處,否則將追究法律責任。

相關文章