欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

為何要小心Nginx的add_header指令詳解

 更新時(shí)間:2019年02月14日 08:37:32   作者:tlanyan  
這篇文章主要給大家介紹了關(guān)于為何說要小心Nginx的add_header指令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

大家都知道,nginx配置文件通過使用add_header指令來設(shè)置response header。

昨天無聊用curl查看一個(gè)站點(diǎn)的信息,發(fā)現(xiàn)返回的頭部與想象中的不一樣:

HTTP/2 200
date: Thu, 07 Feb 2019 04:26:38 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding, Cookie
cache-control: max-age=3, must-revalidate
last-modified: Thu, 07 Feb 2019 03:54:54 GMT
X-Cache: Miss
server: cloudflare
...

主站點(diǎn)在nginx.conf中配置了HSTS等header:

add_header Strict-Transport-Security "max-age=63072000; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

但響應(yīng)頭部沒有這些header。除了常規(guī)的header,僅出現(xiàn)了一個(gè)配置配置在location中的header X-Cache。

第一印象是CDN過濾了這些header?于是找Cloudflare的文檔,沒發(fā)現(xiàn)會(huì)對(duì)這些進(jìn)行處理。轉(zhuǎn)念一想,CDN過濾這些干啥???吃飽了撐的?。克麄冇植桓銁heng審那一套!

問題轉(zhuǎn)移到Nginx的配置上。打開Google搜索”nginx location add_header”,果然發(fā)現(xiàn)不少槽點(diǎn)。點(diǎn)開官網(wǎng)add_header的文檔,有這樣的描述(其他信息已省略):

There could be several add_header directives. These directives are inherited from the previous level if and only if there are no add_header directives defined on the current level.

注意重點(diǎn)在“These directives are inherited from the previous level if and only if there are no add_header directives defined on the current level. ”。即:僅當(dāng)當(dāng)前層級(jí)中沒有add_header指令才會(huì)繼承父級(jí)設(shè)置。所以我的疑問就清晰了:location中有add_header,nginx.conf中的配置被丟棄了。

這是Nginx的故意行為,說不上是bug或坑。但深入體會(huì)這句話,會(huì)發(fā)現(xiàn)更有意思的現(xiàn)象:僅最近一處的add_header起作用。http、server和location三處均可配置add_header,但起作用的是最接近的配置,往上的配置都會(huì)失效。

但問題還不僅于此。如果location中rewrite到另一個(gè)location,最后結(jié)果僅出現(xiàn)第二個(gè)的header。例如:

location /foo1 {
 add_header foo1 1;
 rewrite / /foo2;
}

location /foo2 {
 add_header foo2 1;
 return 200 "OK";
}

不管請(qǐng)求/foo1還是/foo2,最終header只有foo2:

盡管說得通這是正常行為,但總讓人感覺有點(diǎn)勉強(qiáng)和不舒坦:server丟掉http配置,location丟掉server配置也就算了,但兩個(gè)location在同一層級(jí)?。?/p>

不能繼承父級(jí)配置,又不想在當(dāng)前塊重復(fù)指令,解決辦法可以用include指令。

參考

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • nginx下部署vue項(xiàng)目的方法步驟

    nginx下部署vue項(xiàng)目的方法步驟

    這篇文章主要介紹了nginx下部署vue項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 一文帶你搞懂Nginx中的配置文件

    一文帶你搞懂Nginx中的配置文件

    Nginx(發(fā)音為“engine-x”)是一款高性能的?Web?服務(wù)器、反向代理服務(wù)器和負(fù)載均衡器,廣泛應(yīng)用于全球各類網(wǎng)站和應(yīng)用中,下面就跟隨小編一起來了解下如何配置?Nginx?以滿足不同的需求吧
    2025-01-01
  • 18個(gè)運(yùn)維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢)

    18個(gè)運(yùn)維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢)

    這篇文章主要介紹了18個(gè)運(yùn)維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • nginx反向代理踩過的坑及解決

    nginx反向代理踩過的坑及解決

    這篇文章主要介紹了nginx反向代理踩過的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • nginx部署vue項(xiàng)目的詳細(xì)圖文教程

    nginx部署vue項(xiàng)目的詳細(xì)圖文教程

    很多小伙伴在做完Vue項(xiàng)目之后,想要部署到服務(wù)器上自己運(yùn)行試試,下面這篇文章主要給大家介紹了關(guān)于nginx部署vue項(xiàng)目的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Nginx反向代理靜態(tài)文件并修改路徑方式

    Nginx反向代理靜態(tài)文件并修改路徑方式

    這篇文章主要介紹了Nginx反向代理靜態(tài)文件并修改路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Nginx配置中if判斷的使用

    Nginx配置中if判斷的使用

    在Nginx配置中,有時(shí)rewrite規(guī)則無法滿足復(fù)雜邏輯判斷需求,這時(shí)需要使用if語法,if可以根據(jù)文件是否存在、路徑特定條件等進(jìn)行判斷,本文就來介紹一下if判斷的使用
    2024-10-10
  • Nginx中FastCGI如何配置優(yōu)化

    Nginx中FastCGI如何配置優(yōu)化

    這篇文章主要介紹了Nginx中FastCGI如何配置優(yōu)化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • nginx keepalive的具體使用

    nginx keepalive的具體使用

    這篇文章主要介紹了nginx keepalive的具體使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié)

    nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié)

    rewrite功能就是,使用nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)記位實(shí)現(xiàn)URL重寫以及重定向,這篇文章主要介紹了nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié),需要的朋友可以參考下
    2023-12-12

最新評(píng)論