一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - 如何利用map實現Nginx允許多個域名跨域

如何利用map實現Nginx允許多個域名跨域

2020-11-12 23:47沒有名字的博客 Nginx

這篇文章主要給大家介紹了關于如何利用map實現Nginx允許多個域名跨域的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

常見的 Nginx 配置允許跨域

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,這時 Nginx 需要加一句 add_header Access-Control-Allow-Credentials 'true';,但此時會發現瀏覽器報錯,說該參數為 true 時,allow origin 不能設置為 ‘*‘,如果手動指定了多個域名,那同樣會被瀏覽器提示錯誤,說 allow origin 不能設置多個,這些是協議層面的限制

使用 map

在 Nginx 中可以使用 map 得到一個自定義變量,簡單的使用可以參考官方文檔,在上面提到的場景中,可以對請求中的 origin 做一個過濾處理,把符合要求的請求域名放到一個變量中,在設置 allow origin 時使用該變量就能實現一個動態的、多個的允許跨域域名

一個示例配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 的內部變量,用于獲取請求頭中的 origin

$allow_origin 是可以自定義的變量名

總結

到此這篇關于如何利用map實現Nginx允許多個域名跨域的文章就介紹到這了,更多相關map實現Nginx允許多個域名跨域內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://priesttomb.github.io/技術/2020/10/24/using-map-to-set-multiple-allow-origins-in-nginx/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片在线免费观看网站 | 69短视频| 亚洲www视频| 国产精品一区二区国产 | 男人扒开女人下身添 | 四虎tv在线观看884aa | 免费看隐私美女 | coolgay男男gayxxx chinese壮直男gay老年人 chinese野外gay军人 | 亚洲精品日韩专区在线观看 | 32pao强力打造免费高速高清 | 日本情趣视频 | 欧美三级不卡在线观线看高清 | 美女毛片视频 | 999jjj在线播放| 亚洲精品卡一卡2卡3卡4卡 | 99热国产在线 | ts视频在线观看 | 日本免费三片在线播放 | 国产成人无精品久久久久国语 | xxxx18日本视频xxxxx | 国产精品久久久久久久久齐齐 | 法国女佣系列在线播放 | 挺进白嫩老师下面视频 | 日本成日本片人免费 | 欧美日韩视频一区三区二区 | bbox撕裂bass孕妇 | segou视频在线观看 | 99久久精品无码一区二区毛片 | 欧美一区二区三区精品 | 深夜免费网站 | 黑人群性xxx | 久久九九精品国产自在现线拍 | 亚洲大尺码 | 青青网在线视频 | 天天做天天爱天天爽综合区 | 91大神大战高跟丝袜美女 | 欧美va免费精品高清在线 | 国产精品俺来也在线观看了 | 91久久碰国产 | 北条麻妃黑人正在播放 | 石原莉奈adn093店长未婚妻 |