繁体   English   中英

nginx反向代理以避免本地主机的cors错误

[英]nginx reverse proxy to avoid cors error with localhost

我正在使用gulp服务器进行本地前端开发,我连接到的应用程序正在另一台服务器(前端和后端)上运行。

gulp服务器在localhost:1340上运行。 该API位于https://aaa.bbb.com/api

我收到以下错误: No 'Access-Control-Allow-Origin' header is present on the requested resource.

因此,我尝试使用nginx设置反向代理服务器,以便在localhost:8001上启动nginx服务器,它充当gulp服务器和api之间的连接。

这是nginx.conf中的设置

server { # simple reverse-proxy
    listen       8001;
    server_name  localhost;
    # access_log   logs/domain2.access.log  main;


    location / {
      proxy_pass      http://localhost:1340;
      proxy_set_header Host $http_host;
      add_header Access-Control-Allow-Origin *;


      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-NginX-Proxy true;

    }
    location /api/ {
      proxy_pass      https://aaa.bbb.com/api/;
      add_header Access-Control-Allow-Origin *;

      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;



      proxy_redirect off;

    }
  }

但是发生的是,当我指向localhost:8001时,我仍然收到cors错误,它只是传递了gulp服务器的内容。 当我指向localhost:8001 / api /时,它会传递外部服务器的内容,并在其中部署前端。

我需要的行为是我的本地ui指向外部服务器,以便可以看到我在ui中本地所做的更改。 有一种在禁用安全性的情况下使用chrome的解决方法,但这意味着我无法检查其他浏览器进行的更改。

任何帮助/想法将不胜感激。

我遇到了完全相同的问题,偶然发现了这个问题(没有答案),所以我只是想为什么不尝试一下。 它直接为我工作。 没有标题设置或其他任何内容-只是proxy_passes添加到默认的nginx配置中。 这是我所做的:

server {
    listen       8001;
    server_name  localhost;

    location / {
        proxy_pass http://127.0.0.1:1340;
    }

    location /api {
        proxy_pass https://aaa.bbb.com/api;
    }
}

我怀疑您设置的标题中的一两个引起了问题。 您只需要一个简单的反向代理,这样浏览器就不会怀疑它背后有多个域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM