我一直在努力使整个设置工作。 我在网上find了点点滴滴,但没有解决我所有的要求。 我需要这样做,使IE8的工作,所以不幸的是我的双手绑在一起。 我可以移动一些端点,但可能不会太多。
我有一个用户api位于https://api.foo.com/1.0/users 。 该端点接受所有请求types以及参数和dynamic段。 以下是一些样品
我想configurationnginx接受来自其他域和path的请求,并将它们无缝转发到这些端点。 例如
为了做到这一点,我需要请求参数以及表单数据被转发。 基本上整个请求需要被转发然后返回。 另外请注意,我有几个不同的子域名, awesome ,但我想改变一些名称之一。
模式是这样的
http://example.com/api/<subdomain>/<details> -> https://<subdomain>.foo.com/1.0/<details>
我最大的困难就是保持完全一致,同时传递不同的请求。
我尝试了很多东西,但是可能最接近的就是这个
location ~ ^/api/(.*)/(*.) { resolver 8.8.8.8; proxy_pass https://$1.foo.com/1.0/$2$is_args$args; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Host $host; } **The `X-Host` directive doesn't work for me hence the comment
这适用于前两种情况,但不是第三种情况。 另外,我还没有得到这个POST请求。 大多数情况下,我得到502 Bad Gateway错误。 在我看来,它并没有完全映射,而是在它接收到的第一个“/”处切断。 使用3个正则expression式参数添加另一个位置指令也没有帮助我。
我真的很感谢这个话题的任何帮助,因为我完全不知道下一步该做什么。
你的正则expression式是不正确的,你应该使用location ~ ^/api/([^/]+)/(.*)$因为我不知道PCRE lib如何select$ 1作为子域,它的内容可能是awesome/users而不是awesome 。