2016-09-06 39 views
1

我正在使用gulp服务器进行本地前端开发,我连接的应用程序正在另一台服务器上运行,包括前端和后端。nginx反向代理,以避免本地主机cors错误

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

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

所以我试图设置使用nginx的反向代理服务器,这样我就开始了在本地主机的nginx的服务器:8001,它的作用作为gulp服务器和api之间的连接。 8001,我仍然得到CORS错误,它只是传递一饮而尽服务器内容:

这里是从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/api /它传递外部服务器的内容,并在那里部署前端。

我需要的行为是我的本地ui指向外部服务器,以便我可以看到在ui中本地进行的更改。 有一项关于使用chrome禁用安全性的工作,但这意味着我无法检查其他浏览器是否有更改。

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

回答

1

我有完全相同的问题,并偶然发现了这个问题(没有答案),所以我只是想,为什么不只是试一试。它直接为我工作。没有标头设置或任何东西 - 只是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; 
    } 
} 

我怀疑你设置的一个或两个标题是导致问题。您只需要一个简单的反向代理,以便浏览器不会怀疑它背后有多个域。