使用 Nginx 作为代理来避免 CORS
Posted
技术标签:
【中文标题】使用 Nginx 作为代理来避免 CORS【英文标题】:Using Nginx as proxy to avoid CORS 【发布时间】:2015-04-20 04:20:25 【问题描述】:我有这个:
现在我想使用那里的 nginx 服务器来处理我的所有静态文件并将所有请求代理到 api.stuff.com。这可能吗? nginx 是最好的工具吗?配置是什么?
谢谢!
【问题讨论】:
是的,你可以这样做。使用 nginx,您需要设置“Access-Control-Allow-Origin”标头并将值设置为您的 api.stuff.com。要添加您需要的标题wiki.nginx.org/HttpHeadersMoreModule nginx.com/resources/admin-guide/serving-static-content 【参考方案1】:一种方法是告诉 nginx 实际代理对 api 的调用,例如,如果您想调用 api.domain.com/users
,则改为调用 example.com/users
,nginx 会将 /users
调用代理到 api,因为它在本地不存在,当然这种方法更难维护,因为您需要自己进行映射。
server
server_name example.com;
root /path/to/root;
location /
try_files $uri @proxy_to_api;
location @proxy_to_api
# add whatever proxy settings you want
proxy_pass http://api.domain.com;
另一种方法是告诉 nginx 告诉你的客户端可以调用 api 服务器,这样你的客户端可以在没有 nginx 帮助的情况下自行访问api.domain.com
add_header 'Access-Control-Allow-Origin' "api.domain.com";
【讨论】:
以上是关于使用 Nginx 作为代理来避免 CORS的主要内容,如果未能解决你的问题,请参考以下文章
带有反向代理 Nginx 服务器和 nodejs 的 CORS 将不起作用
由于 CORS,Nginx 反向代理后面的 Golang 应用程序不会接受 ajax 请求