远程服务器: Ubuntu 14.04 Headless
我已经成功地设置了Couchdb v2.0.0,并且可以通过www.mydomain.com:5984/_utils远程访问它
我想创建一个子域来访问这个网址,类似于dbadmin.mydomain.com
首先,我创建了db.mydomain.com的一个子域(这里是apache2 vhost配置:)
<VirtualHost *:80>
ServerName db.[mydomain].com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://db.[mydomain].com:5984/
ProxyPassReverse / http://db.[mydomain].com:5984/
</VirtualHost>注意:我已将mydomain替换为实际的域;P
然后,我使用DNS注册器创建了一个A记录,如下所示:
db A [PublicIP]然后是SRV记录:
_db._tcp.db SRV 0 5 5984 db.[mydomain].com我在我的笔记本电脑上通过http://db.[mydomain].com/来测试它
结果:{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
所以我认为这是一次成功。现在,我创建了dbadmin子域。Apache2 vhost配置:
<VirtualHost *:80>
ServerName dbadmin.[mydomain].com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://db.[mydomain].com:5984/_utils
ProxyPassReverse / http://db.[mydomain].com:5984/_utils
</VirtualHost>然后是另一条A记录:
dbadmin A [PublicIP]后跟另一个SRV记录:
_dbadmin._tcp.dbadmin SRV 0 5 5984 dbadmin.[mydomain].com我通过访问http://dbadmin.[mydomain].com来测试它
结果:{"error":"unauthorized","reason":"You are not a server admin."}
我花了太多的时间试图找出做这件事的正确方法。我尝试了各种配置,设置,域名系统记录,更改沙发的local.ini,代理设置…你明白了吧。
请说明如何简单地将子域重定向到服务器的公网IP +端口+路径或服务器的根域+端口+路径?
发布于 2016-10-15 17:05:59
我在VHost配置中用mod_rewrite解决了这个问题:
<VirtualHost *:80>
ServerName dbadmin.[mydomain].com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://db.[mydomain].com:5984/
ProxyPassReverse / http://db.[mydomain].com:5984/
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/_utils
RewriteRule ^/$ /_utils/$1 [R,L]
看起来我甚至也不需要SRV记录。太棒了!
谁能简明扼要地向我解释一下这个条件和规则的正则表达式到底在做什么?我知道在基本级别上,它在查询中查找/_utils,如果不在那里,它就把它放在那里……
然而,规则确实从URL的开头删除了协议标识符的http://‘,这是相当烦人的……有人能解释为什么,以及如何防止这种情况发生吗?
https://stackoverflow.com/questions/40038751
复制相似问题