前言
add_header 是 headers 模組中定義的指令,顧名思義就是用來新增 http 回應頭的。但請注意他只是「添加」而已,並不是重寫。所以如果已經存在某個頭,再使用 add_header 就會出問題。而且在低版的 nginx 中 add_header 還不支援在錯誤頁面中使用。
這是一個坑比較多的指令。它的處理階段比 location 處理晚,雖然可以寫在 location 中,但如果 rewrite 別的 location,那麼上一個 location 中尚未處理的 add_header 就會丟失。例如:
location = /a { add_header a 1; rewrite / /b; } location = /b { add_header b 2; return 204; }
並沒有 a 1 這個頭吧?這就是一個坑!
另一個坑就是一開始說的重複的問題,例如我希望給一個內容設定 content-type,但由於全域有設定一個 default_type,所以就重複了。
default_type 'text/plain'; location = /a { add_header content-type application/json; return 200 '"ok"'; }
解決的方法當然有很多例如對這個 location 將 default_type 置空,或者乾脆不用 add_header,直接針對這個 location 修改 default_type。
最後一個大坑就是對錯誤頁面無法生效,這也是在中有明確定義的。例如下面這個例子:
location = /a { add_header content-type application/json; return 404 '"not found"'; }
我希望回應一個 json,然而由於狀態碼是 404,所以這裡的 add_header 並不會生效。
雖然這個範例可以用 default_type 來解決問題,但如果是其它頭呢?例如 access-control-allow-origin 該怎麼辦?那麼除了使用 lua 或其它第三方模組來解決之外就無解了。 nginx 當然也意識到了這個問題,所以文件中也說了在 1.7.5 版本之後支援一個叫 always 的參數。雖然 nginx 自己解決了這個問題,但基於 1.6.2 的 tengine 就要呵呵了。
以上是nginx配置add_header的坑怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINX適合處理高並發和靜態內容,Apache則適用於復雜配置和動態內容。 1.NGINX高效處理並發連接,適合高流量場景,但處理動態內容需額外配置。 2.Apache提供豐富模塊和靈活配置,適合複雜需求,但高並發性能較差。

NGINX和Apache各有優劣,選擇應基於具體需求。 1.NGINX適合高並發場景,因其異步非阻塞架構。 2.Apache適用於需要復雜配置的低並發場景,因其模塊化設計。

NGINXUnit是一個開源應用服務器,支持多種編程語言,提供動態配置、零停機更新和內置負載均衡等功能。 1.動態配置:無需重啟即可修改配置。 2.多語言支持:兼容Python、Go、Java、PHP等。 3.零停機更新:支持不中斷服務的應用更新。 4.內置負載均衡:可將請求分發到多個應用實例。

NGINXUnit優於ApacheTomcat、Gunicorn和Node.js內置HTTP服務器,適用於多語言項目和動態配置需求。 1)支持多種編程語言,2)提供動態配置重載,3)內置負載均衡功能,適合需要高擴展性和可靠性的項目。

NGINXUnit通過其模塊化架構和動態重配置功能提高了應用的性能和可管理性。 1)模塊化設計包括主控進程、路由器和應用進程,支持高效管理和擴展。 2)動態重配置允許在運行時無縫更新配置,適用於CI/CD環境。 3)多語言支持通過動態加載語言運行時實現,提升了開發靈活性。 4)高性能通過事件驅動模型和異步I/O實現,即使在高並發下也保持高效。 5)安全性通過隔離應用進程提高,減少應用間相互影響。

NGINXUnit可用於部署和管理多種語言的應用。 1)安裝NGINXUnit。 2)配置它以運行不同類型的應用,如Python和PHP。 3)利用其動態配置功能進行應用管理。通過這些步驟,你可以高效地部署和管理應用,提升項目效率。

NGINX更适合处理高并发连接,而Apache更适合需要复杂配置和模块扩展的场景。1.NGINX以高性能和低资源消耗著称,适合高并发。2.Apache以稳定性和丰富的模块扩展闻名,适合复杂配置需求。

NGINXUnit通過其動態配置和高性能架構提升應用的靈活性和性能。 1.動態配置允許在不重啟服務器的情況下調整應用配置。 2.高性能體現在事件驅動和非阻塞架構以及多進程模型上,能夠高效處理並發連接和利用多核CPU。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具