如何利用map實(shí)現(xiàn)Nginx允許多個(gè)域名跨域
常見的 Nginx 配置允許跨域
server { listen 11111; server_name localhost; location ~ /xxx/xx { if ($request_method = 'OPTIONS') { return 204; } add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; proxy_pass http://1.2.3.4:5678; } }
指定 Access-Control-Allow-Origin 為 ‘*' ,即為最簡單暴力的允許所有訪問跨域
允許 Cookie
有些場景下需要使用 Cookie,這時(shí) Nginx 需要加一句 add_header Access-Control-Allow-Credentials 'true';,但此時(shí)會(huì)發(fā)現(xiàn)瀏覽器報(bào)錯(cuò),說該參數(shù)為 true 時(shí),allow origin 不能設(shè)置為 ‘*‘,如果手動(dòng)指定了多個(gè)域名,那同樣會(huì)被瀏覽器提示錯(cuò)誤,說 allow origin 不能設(shè)置多個(gè),這些是協(xié)議層面的限制
使用 map
在 Nginx 中可以使用 map 得到一個(gè)自定義變量,簡單的使用可以參考官方文檔,在上面提到的場景中,可以對(duì)請(qǐng)求中的 origin 做一個(gè)過濾處理,把符合要求的請(qǐng)求域名放到一個(gè)變量中,在設(shè)置 allow origin 時(shí)使用該變量就能實(shí)現(xiàn)一個(gè)動(dòng)態(tài)的、多個(gè)的允許跨域域名
一個(gè)示例配置如下:
map $http_origin $allow_origin { default ""; "~^(https?://localhost(:[0-9]+)?)" $1; "~^(https?://127.0.0.1(:[0-9]+)?)" $1; "~^(https?://172.10(.[\d]+){2}(:[0-9]+)?)" $1; "~^(https?://192.168(.[\d]+){2}(:[0-9]+)?)" $1; } server { listen 11111; server_name localhost; location ~ /xxx/xx { if ($request_method = 'OPTIONS') { return 204; } add_header Access-Control-Allow-Origin $allow_origin; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; add_header Access-Control-Allow-Credentials 'true'; proxy_pass http://1.2.3.4:5678; } }
解釋說明:
$http_origin 是 Nginx 的內(nèi)部變量,用于獲取請(qǐng)求頭中的 origin
$allow_origin 是可以自定義的變量名
總結(jié)
到此這篇關(guān)于如何利用map實(shí)現(xiàn)Nginx允許多個(gè)域名跨域的文章就介紹到這了,更多相關(guān)map實(shí)現(xiàn)Nginx允許多個(gè)域名跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx 代理服務(wù)器配置雙向證書驗(yàn)證的方法
這篇文章主要介紹了nginx 代理服務(wù)器配置雙向證書驗(yàn)證的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02使用log_format為Nginx服務(wù)器設(shè)置更詳細(xì)的日志格式方法
下面小編就為大家分享一篇使用log_format為Nginx服務(wù)器設(shè)置更詳細(xì)的日志格式方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03nginx lua集成kafka的實(shí)現(xiàn)方法
這篇文章主要介紹了nginx lua集成kafka的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐
在我們實(shí)際生產(chǎn)中,一臺(tái)服務(wù)器的處理能力、存儲(chǔ)空間是有限的,這時(shí)候就需要負(fù)載均衡,本文詳細(xì)的介紹了Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2022-03-03詳解nginx過濾url實(shí)現(xiàn)前臺(tái)js的配置問題
本篇文章主要介紹了nginx過濾url實(shí)現(xiàn)前臺(tái)js的配置問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01nginx 負(fù)載均衡的三種參數(shù)設(shè)置
這篇文章主要介紹了nginx 負(fù)載均衡的三種參數(shù)設(shè)置,需要的朋友可以參考下2017-07-07