标题可能写的不怎么好。
我想给自己用 Koa 写的 API 程序里弄一个和GitHub API 一样的 API 目录之类的东西,可是我不知道如何在后端里获取自己服务器的域名。
比如我的服务器的域名为 example.com
,那么内容应该是这样的:
{
'example1': 'http://example.com/api/example1/',
'example2': 'http://example.com/api/example2/'
}
而别人在使用我的项目时,域名为 qwertyu.io
,那么应该是这样的:
{
'example1': 'http://qwertyu.io/api/example1/',
'example2': 'http://qwertyu.io/api/example2/'
}
可是就在这域名上我不知道该怎么做,是要人工配置定义域名还是有其它的轮子可以这么做?
1
rekulas 2016-07-01 14:01:33 +08:00
黑色主题怎么实现的
|
3
rekulas 2016-07-01 14:02:41 +08:00
koa 不了解,不过域名不是可以动态获取么
|
5
sfree2005 2016-07-01 14:12:26 +08:00 1
这个吗?
request.headers.host |
6
for8ever 2016-07-01 14:15:59 +08:00
你意思是服务器的域名和别人使用的域名不一样?
|
9
bigfei 2016-07-01 14:21:25 +08:00 1
使用 request.origin /request.host 都可以。
see http://koajs.com/#request |
10
learnshare 2016-07-01 14:21:59 +08:00
写配置文件也可以吧,毕竟对外服务的时候,域名也都是外部程序管理的
|
11
kamikat 2016-07-01 14:31:09 +08:00
读 Host 头域是可以的 https://github.com/koajs/koa/blob/master/docs/api/request.md#requesthost
感觉还是写配置文件比较稳… 不同的域名的时候开不同的服务器实例用 nginx 做反向代理。 |
12
DoraJDJ OP |
13
DoraJDJ OP @kamikat 我用 Host 头获取域名的情况:
无反代: ```json {"code":0,"links":{"get_blacklist":"http://localhost:8388/api/v0/blacklists"}} ``` Nginx 反代: ```json {"code":0,"links":{"get_blacklist":"http://ako.yudachi/api/v0/blacklists"}} ``` |
15
kamikat 2016-07-01 14:41:39 +08:00
@DoraJDJ 也许是 nginx 配置在 server 块里有 proxy_set_header Host $host; 这样的话会把访问 nginx 的时候用的 host 设置到 Host 头域上,从 req.host 获取到的就是访问 nginx 的时候用的 Host 了(我觉得这个是期望的行为,理解有问题么?)
|
16
DoraJDJ OP @kamikat 是的,我在本机里弄 Nginx 反代的时候确实有设置 Host 头:
``` server { listen 80; server_name ako.yudachi; location / { proxy_pass http://127.0.0.1:8388; proxy_http_version 1.1; proxy_set_header Host $host; } } ``` 说起来很奇怪,真的有人弄反代的时候不设置 Host 头吗? |
18
whimsySun 2016-07-01 15:28:15 +08:00 1
this.origin
|