incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Newson <rnew...@apache.org>
Subject Re: Serving Simple HTML page to Public IP from CouchDB
Date Tue, 19 Mar 2013 22:59:22 GMT
The third alternative is setting up your own dns server (bind,
dnsmasq, a million other options) and pointing to it from all your
clients. In your situation that's just a slightly fancier variant of
your 2).

You could also try IrisCouch or Cloudant, I believe low levels of
usage are free in both but do check. Disclaimer: I work for Cloudant.

B.

On 19 March 2013 22:52, Chris Sphinx <chrissphinx@gmail.com> wrote:
> Okay, sorry about this I'm a programmer but I don't know anything about networking. I
just want to be sure there's no way to achieve the functionality I'm talking about without
1) getting a domain name or 2) setting an entry in the /etc/hosts file on the computer I want
to use to access the page. Is that right?
>
>
> On Mar 19, 2013, at 6:45 PM, Robert Newson <rnewson@apache.org> wrote:
>
>> if you want a name maped to an ip address that works anywhere in the
>> world, that's what DNS *is*. :)
>>
>> If you control all the clients, you can add local hosts files and/or
>> point at your own dns server with your own custom zone.
>>
>> B.
>>
>> On 19 March 2013 22:40, Chris Sphinx <chrissphinx@gmail.com> wrote:
>>> I simply want to be able to access an html page from the public IP without breaking
the Couch. This is just for my personal convenience, this is not for a public site. But I
want to be able to access the webpage from anywhere (like a mobile device or public computer).
>>>
>>> If I understand correctly, I could make this work if I had a registered domain
name? That's fine, but is there any way to accomplish this WITHOUT buying a domain name?
>>>
>>>
>>> On Mar 19, 2013, at 9:22 AM, Robert Newson <rnewson@apache.org> wrote:
>>>
>>>> Virtual Hosting is predicated on host names. Vhosting the ip address
>>>> is not recommended, for the reasons you've already encountered.
>>>>
>>>> What are you trying to achieve? It's very odd to direct people to your
>>>> site via IP address. Are you trying to use the virtual host feature as
>>>> a security mechanism?
>>>>
>>>> B.
>>>>
>>>> On 19 March 2013 13:15, Chris Sphinx <chrissphinx@gmail.com> wrote:
>>>>> Sure, here is a secret gist with the relevant files:
>>>>>
>>>>> https://gist.github.com/chrissphinx/a9e8411fa6efefa9572c
>>>>>
>>>>> To state the problem again: I cannot access the webpage by hitting:
>>>>>
>>>>> http://184.75.155.16:5984
>>>>>
>>>>> It will simply return the JSON welcome message. However, if I (or anyone
else I assume) were to create an entry in THEIR /etc/hosts file:
>>>>>
>>>>> 184.75.155.16           couch
>>>>>
>>>>> And hit the url:
>>>>>
>>>>> http://couch:5984
>>>>>
>>>>> Then it works. That's great, but it's not what I want. I want the public
IP to go directly to the index.html file no matter what computer is hitting it. The only way
I've found to get this to occur is to put in [vhosts]:
>>>>>
>>>>> 184.75.155.16:5984
>>>>>
>>>>> The public IP. This DOES work, but it breaks the entire database. You
can't write nor can you retrieve any docs from the database. This makes sense to me because
the database isn't at the IP anymore, just the webpage.
>>>>>
>>>>> A sysadmin friend of mine told me that this is why you need a vhost set
up, but now it's beginning to seem as if I actually want a "reverse proxy" which is functionality
that is not provided by CouchDB? Or is serving a couch app to the public IP possible with
only Couch running on the RPi? Thank you for the help so far, it is really appreciated.
>>>>>
>>>>>
>>>>> On Mar 19, 2013, at 4:53 AM, Dave Cottlehuber <dch@jsonified.com>
wrote:
>>>>>
>>>>>>
>>>>>> Hi Chris,
>>>>>>
>>>>>> Sorry to hear you are stuck on this! I remember being equally
>>>>>> mind-boggled a couple years back. It will "click" soon hopefully.
>>>>>>
>>>>>> BTW It will help a great deal if you can put a minimal case together
&
>>>>>> post it back to the list (or via a paste service gist friendpaste
>>>>>> etc). vhosts, your CNAME, the design doc including the rewriter rules,
>>>>>> and the specific error message in the logfile.
>>>>>>
>>>>>> I have this setup at home but power's off and I don't have the config
>>>>>> handy, if I have a free spot today I'll whip an example up. So this
is
>>>>>> from memory,
>>>>>>
>>>>>> Ensure you've got:
>>>>>>
>>>>>> [httpd]
>>>>>> bind_address = 0.0.0.0
>>>>>>
>>>>>> [vhosts]
>>>>>> cname:5984 = /dbname/_design/ddoc_name/_rewrite
>>>>>>
>>>>>> in your local.ini, replacing cname, dbname, ddoc_name as appropriate.
>>>>>>
>>>>>> In your design document, your rewriter key should be something like
this:
>>>>>>
>>>>>> [
>>>>>>  {"from": "/","to": "/index.html"},
>>>>>>  {"from": "/*","to": "/*" }
>>>>>> ]
>>>>>>
>>>>>> And obviously there should be an attachment called index.html within
the ddoc.
>>>>>>
>>>>>> Check through http://docs.couchdb.org/en/latest/pretty_urls.html
and
>>>>>> see if that helps you out. I'm pretty sure out of this thread we
can
>>>>>> put a better example up!
>>>>>>
>>>>>> Note that you could also set http port to 80 both in the vhost and
in
>>>>>> local.ini under [httpd] section which would be even tidier.
>>>>>>
>>>>>> A+
>>>>>> Dave
>>>>>
>>>>>> On 19 March 2013 09:32, Chris Sphinx <chrissphinx@gmail.com>
wrote:
>>>>>>> I have a CouchDB running on a RPi behind a router. I've seen
countless tutorials about "pretty urls", but no matter what I do I just cannot get this to
work for my public IP. All I want to do is be able to serve a boring webpage to anyone that
hits
>>>>>>>
>>>>>>> http://my.pub.lic.ip:5984
>>>>>>>
>>>>>>> But the only way I was able to do this is by putting the public
IP under vhosts in the local.ini file. Doing so breaks the database and I can't access it
in any way until I remove the line from the local.ini file and restart it. Trying to get at
any part of the database results in:
>>>>>>>
>>>>>>> {"error":"not_found","reason":"Document is missing attachment"}
>>>>>>>
>>>>>>> Sure, I can set up something like 127.0.0.1<tab>couch to
hook up to http://couch:5984 on the RPi. I can even load it from another machine, but I have
to set my /etc/hosts on whatever machine I want to use to include my.pub.lic.ip<tab>couch.
What if I want to allow anyone to access the page without having to hack their /etc/hosts
file? How am I supposed to set this up?
>>>>>>>
>>>>>>> I get the feeling that the only way to do this is to run something
like ngix in front of the database with a reverse proxy, but I'm already killing an ant with
a sledgehammer and I feel that there is just something I am overlooking here. Can anybody
tell me what I'm doing wrong? Or walk me through how to get CouchDB to serve up a webpage
to a public IP?
>>>>>>

Mime
View raw message