nginx 配置允许别名 url 访问我当前的 url

nginx 配置允许别名 url 访问我当前的 url

我当前的 Nginx 配置与此 URL 配合良好: https://myhostname.com

但我为同一台服务器创建了不同的别名,比如 myhostname1

现在当我尝试访问该网址时

https://myhostname1.com

它会抛出错误

XMLHttpRequest无法加载 https://sg-stg-bms-cdn001.eng.vmware.com//scripts/services/appStatusService.js?pingpong=2831234.“Access-Control-Allow-Origin”标头具有值“https://myhostname.com' 与提供的原点不相等。原点 'https://myhostname1.com' 因此不允许访问。

主机 myhostname 和 myhostname1 都指向相同的 IP 和 DNS 条目。

我尝试将此行添加到我的 nginx 配置中,但似乎不起作用

   location / {
      add_header 'Access-Control-Allow-Origin' '*';
..........

但似乎还是不起作用。有人能帮我解决我的问题吗?

答案1

关联可能比我的总结更有帮助,但是:要么在文档末尾包含“include(/path/to/sites-enabled)”,并在该位置有一个详细说明启用站点的配置文件,要么在每个服务器的基础上添加块(服务器{port; path; name; etc} 你应该已经在服务器{listen 80; server_name myhostname.com; index index.htm; root /path/to/root/folder} 的相应文件中有一个)。

答案2

此消息告诉您,您的请求违反了javascript 的同源安全策略。如果您使用浏览器访问该网站,则该消息可能来自浏览器,而不是来自 nginx。javascript 安全中的同源策略保护用户免受恶意网站试图使用浏览器的 javascript 与其他网站交互的侵害。如果没有此沙盒,恶意网页可能会使用浏览器的 javascript 引擎与其他网站交互 - 可能会更改用户的电子邮件密码、编辑她的 Facebook 页面等等。

您可以通过添加 http 标头来选择性地扩展此安全性跨域共享(CORS)。Nginx 可以帮你做到这一点。操作方法如下:

  1. 如果您的配置包含此指令,add_header X-XSS-Protection "1; mode=block";请将其删除(或注释掉)。这将删除告诉浏览器禁止 CORS 的安全规定。
  2. 通过向请求添加 CORS 标头来选择性地扩展跨站点脚本。在每个主机的位置块中,添加以下指令:
    add_header 'Access-Control-Allow-Origin' "$http_origin" always;
    add_header 'Access-Control-Allow-Credentials' 'true' always;
    add_header 'Access-Control-Allow-Methods' 'GET, POST' always;
    add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
    

使用“$http_origin”将 CORS 限制为 *.yourdomain.com,但您也可以使用'Access-Control-Allow-Origin' '*' always,将 CORS 开放到所有站点——这是一种较弱的安全模型。较新版本的 nginx 需要第三个参数(always在本例中)。您的配置中缺少该参数。

相关内容