Nginx
如何用 nginx 替換代理響應中的 Access-Control-Allow-Origin 標頭
我正在使用一個簡單的 nginx 實例將 REST 呼叫代理到另一台伺服器。我的代理的目的是允許使用 cookie 進行身份驗證。我有它的工作,除了一個問題。提供 REST 服務的伺服器正在發送標頭
Access-Control-Allow-Origin *
。對於基於 cookie 的身份驗證,該標頭過於寬鬆。我需要用更嚴格的標題替換該標題。這是我的 nginx 配置的一個子集:
map $http_origin $cors_header { default ""; "~^https?://[^/]+\.mydomain\.com(:[0-9]+)?$" $http_origin; } server { location / { proxy_pass https://myrestserver.com/api; add_header Access-Control-Allow-Origin $cors_header; add_header Access-Control-Allow-Credentials true; } }
我的問題是
Access-Control-Allow-Origin
我的回復中出現了兩個標題。如何替換從 REST 伺服器返回的標頭,以便最終響應中僅存在我的標頭版本?
最好的辦法是更改 REST 伺服器端的響應,但是,假設您無法控制 REST 伺服器,有一個用於 Nginx 的模組可以修改名為 ngx_headers_more 的標頭:https://github。 com/openresty/headers-more-nginx-module
您必須安裝模組(這可能涉及從原始碼建構 nginx 並在 ./configure 中添加模組,如 github 自述文件中所述)。對於您的特定問題,一旦安裝它,您可以在任何塊中添加此指令
more_set_headers "Access-Control-Allow-Origin: $cors_header"