api.example.com 如何代理到 www.example.com/api/ 下?
发布于 7 年前 作者 JZLeung 5925 次预览 最后一次回复是 7 年前 来自 问答
我想要实现的结果是:
访问 api.example.com/hello/world
就相当于访问 www.example.com/api/hellp/world
这样。就是 url 看起来好看一点。
不知道在 nginx 中的配置应该需要怎么写?
24 回复
我想要实现的结果是:
访问 api.example.com/hello/world
就相当于访问 www.example.com/api/hellp/world
这样。就是 url 看起来好看一点。
不知道在 nginx 中的配置应该需要怎么写?
重定向
@fruit-memory URL 不能改变啊。微信那边会提示不在安全域名内。
这不就是反向代理么… nginx reverse proxy
那就试试反向代理
@thonatos 但是我用了 proxy_pass 后,会无限重定向到 /api/api/api/api/ 下。
@fruit-memory 但是我用了 proxy_pass 后,会无限重定向到 /api/api/api/api/ 下。
如果使用了 proxy_pass 后就会一直加 /api 并重定向。
这是 nginx 的配置:
然后再写一个配置处理
www.example.com最后proxy_pass到某个端口@fruit-memory /api/ 就是个路由。
@JZLeung 不对吗?按你给的要求就是把路由转到api下面来吗?
nginx配置url重写即可
@JZLeung
nginx 通过 host 来 match 到 server 的。 因此,你的配置需求去掉 proxy_set_header Host $host;
@JZLeung 你这个配置。。。。看看下面给你的写法吧
这个超级简单的,反向代理把api加上即可
From Noder
@JZLeung (/* and not /api/*)=> /api/*
@Gitforxuyang 重写好像不行。会无限重定向 /api/api/api/…
@hanyuzhou2006 请问下这个要具体怎么写?
@thonatos 他给的直接 rewrite 我试过了,很怪异地无限重定向了。
给 www.example.com再配置一个service啊. 你这个已经是不同的域了,感觉不适合用rewrite吧
@redky 去掉后,访问接口就这样。
@fruit-memory 你的方法可以,但是 url 会改变,微信那边好像会报错。
你这是要浏览器地址栏显示改变后的URL,只能这么做吧?微信可能是以为你改变后的URL不安全
url 重写啊!对外部是透明的 From Noder
@fruit-memory 要的是浏览器的地址栏不显示改变后的 url 才可以。