我想要实现的结果是:
访问 api.example.com/hello/world
就相当于访问 www.example.com/api/hellp/world
这样。就是 url 看起来好看一点。
这是 nginx 的配置
然后访问,nginx 报错:no resolver defined to resolve
1
9200 2018-03-05 14:35:04 +08:00
|
2
barble 2018-03-05 14:36:53 +08:00
这个 rewrite 就能办到,不用 proxy
|
3
oonnnoo 2018-03-05 15:59:45 +08:00
# 供参考
location @redirect { rewrite ^/api/(.*)$ http://api.example.com/$1 redirect; } location /api/ { proxy_set_header Host $host; proxy_pass http://api.example.com/; proxy_connect_timeout 3s; error_page 500 502 504 @redirect; } |
5
580a388da131 2018-03-05 16:05:40 +08:00
绑定子目录就好了
|
6
menduo 2018-03-05 16:20:42 +08:00
没看出有什么总理 。location 换成 / 就行了吧。
|
7
menduo 2018-03-05 16:21:02 +08:00
没看出有什么问题 。location 换成 / 就行了吧。
|
8
JHerschel 2018-03-05 16:54:03 +08:00
在 proxy_pass 前面添加一条: " resolver 8.8.8.8; " 试试?
|
9
LeungJZ OP |
10
alvinbone88 2018-03-05 17:46:23 +08:00
|
11
nextvay 2018-03-05 17:52:34 +08:00
root /home/xxxx/api;
|
12
beginor 2018-03-05 19:36:11 +08:00 via Android
可以用 proxy_pass 或者 rewrite 都可以解决, 仔细看一下 nginx 的文档就行。
不过搭车问一下, 如果 api 中返回 http 重定结果向该怎么处理? |
14
yankebupt 2018-03-05 23:54:36 +08:00
为什么我觉得这样写会不会 www.example.com/api/api/api/api......无限循环...
是不是错觉 |
15
tomczhen 2018-03-06 00:25:24 +08:00 via Android
客户端支持的话可以考虑用 307 跳转
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/307 |
16
qiayue 2018-03-06 00:32:46 +08:00
|
17
LeungJZ OP |
18
LeungJZ OP 顶顶。
|