我是靠谱客的博主 活力盼望,最近开发中收集的这篇文章主要介绍Nginx指定多个域名跨域配置1.Nginx配置域名跨域单个域名2.Nginx配置域名跨域多个域名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.Nginx配置域名跨域单个域名

location /live{
          ...
        add_header 'Access-Control-Allow-Origin' 'http://domain:port' always;
        add_header 'Access-Control-Allow-Credentials' 'true';
        # 为预检请求加的header
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE';
        #为预检请求加的header
        add_header 'Access-Control-Allow-Headers' '*';
}

第一个响应头是允许跨域的域
$http_origin
当请求成功时,HTTP CODE 为200。而请求失败时HTTP CODE 为400, 此时add_header ‘Access-Control-Allow-Origin’ ‘*’ 配置无效!设置无论HTTP CODE 为何值时都生效需要加 always 。nginx版本>1.7.5时候无须加always。
第二个响应头,是否要认证
第三个响应头是允许跨域的请求方法
第四个响应头是请求头里面允许跨域使用的请求头,如果有自定义的请求头,也要加进去

2.Nginx配置域名跨域多个域名

方法一:

server {
        set $cors '';
        if ($http_origin ~* "^http://deomain01:port$") {
            set $cors $http_origin;
        }
        if ($http_origin ~* "^http://deomain02:port$") {
            set $cors $http_origin;
        }
        if ($http_origin ~* "^http://deomain002:port$") {
            set $cors $http_origin;
        }
        location /live{
                  ...
                add_header 'Access-Control-Allow-Origin' '$cors';
                add_header 'Access-Control-Allow-Credentials' 'true';
                # 为预检请求加的header
                add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE';
                #为预检请求加的header
                add_header 'Access-Control-Allow-Headers' '*';
        }

$http_origin这个格式是nginx取请求中header的XXX的值的。
这里取的是origin,而一般跨域请求都会将请求的来源放在origin中(浏览器会往跨域请求的header上面加origin这个header)
$ cors 变量获取想要的跨域域名并赋值到 “add_header ‘Access-Control-Allow-Origin’ ‘$cors’”中。

方法二

    map $http_origin $cors_list{
		default  http://aaa.cn;
	    "~ http://bbb.cn"  http://bbb.cn;
	}
    server {
        listen       8089;
        server_name  localhost;
        location /live{
                  ...
                add_header 'Access-Control-Allow-Origin' '$cors_list';
                add_header 'Access-Control-Allow-Credentials' 'true';
                # 为预检请求加的header
                add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE';
                #为预检请求加的header
                add_header 'Access-Control-Allow-Headers' '*';
        }

map指令是ngx_http_map_module模块提供的,默认情况下nginx有加载这个模块。

语法: map $var1 $var2 {…}
默认值: -
配置段: http

map为一个变量设置的映射表。映射表由两列组成,匹配模式和对应的值。

在map块里的参数指定了源变量值和结果值的对应关系。

default: 没有匹配结果将使用的默认值。如果没有设置default,将会用一个空的字符串作为默认的结果。

匹配模式可以是一个简单的字符串或者正则表达式,使用正则表达式要用(‘~’)。

注意在nginx.conf配置文件配置跨域时,记得清除客户端如浏览器缓存,否则会出现配置没生效的情况。

最后

以上就是活力盼望为你收集整理的Nginx指定多个域名跨域配置1.Nginx配置域名跨域单个域名2.Nginx配置域名跨域多个域名的全部内容,希望文章能够帮你解决Nginx指定多个域名跨域配置1.Nginx配置域名跨域单个域名2.Nginx配置域名跨域多个域名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部