2017-08-13 193 views
0

我有一个关于nginx重写/重定向规则的问题。nginx重写app api规则

我有一个是在app.example.com运行的应用程序,我希望转发达到这个服务器到另一个子域中的所有请求:api.example.com

我有这个文件夹中的所有API相关的东西:/react-api

我设法得到这个工作:

location ~ /react-api { 
    rewrite ^(.+)$ http://api.example.com$request_uri? permanent; 
} 

它完全在浏览器中,但是当我尝试在我的应用程序运行它,它不工作。我认为这与301 redirect这个事实有关?该应用程序无法使用该功能?

我该如何解决这个问题?

感谢所有帮助!

UPDATE 我已经试过proxy_pass

location /react-api/(.*) { 
    proxy_pass http://api.example.com/$is_args$args/; 
} 

但我无法得到那个工作要么。

+0

为什么这个问题标记为'.htaccess'? – arkascha

+0

让你的应用程序来处理重定向,或更好地让你的应用程序请求api.example.com –

+1

@arkascha这是一个错误:) –

回答

0

你或许可以使用上行流和proxy_pass作为解决

设置api.example.com作为上游。

upsteram api-server { 
    server api.example.com; 
} 

配置API位置以使用新的上游。

location ~ /react-api/(.*) { 
    proxy_pass api-server/$is_args$args 
} 

为了让API代理正常工作(例如头部转发),有一点比这个要配置。 有关nginx的变量和upstrems更多信息,请阅读这些文档:

http://nginx.org/en/docs/http/ngx_http_core_module.html

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

0

你只需要简单的代理通。

location /rest-api/ { 
    proxy_pass http://api.example.com/rest-api/; 
} 

就是这样。 不需要添加查询参数,它们默认被复制。