Nginx 配置 https 和 配置 允許指定域名下所有二級域名跨域請求
阿新 • • 發佈:2021-10-17
Nginx 配置 https 和 配置 允許指定域名下所有二級域名跨域請求
如果網站 的地址 在 https://www.domain.xyz 上, 這個網站後端服務在 http:api.domain.xyz, 這樣如果在 https:// www.domain.xyz 上
直接傳送請求 到 http:api.domain.xyz 會出現跨域問題,因為雖然頂級域名相同,但是二級域名不同也會出現跨域(二級域名一個時 www,一個是 api)。
可採用如下 nginx 配置解決跨域問題:
nginx.conf 配置
nginx.conf
... http { ... server { listen 443 ssl; server_name api.domain.xyz; # 配置 https #證書檔名稱 ssl_certificate xxx.crt; #私鑰檔名稱 ssl_certificate_key xxx.key; # access_log logs/api.domain.access.log; # 解決跨域問題 set $flag '0'; location / { # 將 api.domain.xyz 域名上的請求代理到 http://127.0.0.1:3000 proxy_pass http://127.0.0.1:3000; # 配置 domain.xyx 域名下的 所有 二級或多級域名 允許跨域請求 if ($http_origin ~* "(https?:\/\/.*\.domain\.xyz($|\/))") { set $flag '1'; } # 如果有 允許其它域名 進行跨域請求 # if ($http_origin ~* "(https?:\/\/.*\.otherdomain\.xyz($|\/))") { # set $flag '1'; # } if ($flag = '1') { # 新增允許跨域的響應頭 # add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Origin "$http_origin"; ###帶上使用者認證資訊 add_header Access-Control-Allow-Credentials true; ##允許的方法 post,get ... add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, DELETE"; # add_header Access-Control-Allow-Headers "xxx-xx-xx"; } } } ... }