Aparajita, Are you using the header's "Host" directive for matching the
proper root folder? I tried hard-coding the port in nginx, inside my nginx
server block as follows: ( See $host:8010 ) I thought I'd try passing the
port into the header, too, to make sure that was the issue, but now it's
worse. (See below)

    location / {
        root   /Users/<user_name>/Documents/name1_root;
        proxy_pass http://name1_proxy;
        proxy_next_upstream error timeout invalid_header http_500 http_502
http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host:8010;  #
<-------HARD-CODED PORT NUMBER
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        # proxy_set_header        X-Forwarded-Proto https;
        # index  index.html index.htm;
    }

Consequently, my header now looks like this:

10/2/17 at 14:19:07: Header: GET /index.a4d?fuseaction=root.main HTTP/1.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Connection: close
Cookie: c42_cookie_token=07l322blahblah; __utmc=135214817;
PROD=8BuOblahblah; _ga=GA1.2.7674blahblah; _gid=GA1.2.1blahblah
Host: name2.domain.com:8010
Referer: http://name2.domain.com/
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
X-Forwarded-For: <MY_IP_ADDRESS>
X-Real-IP: <MY_IP_ADDRESS>


Now, no matter what I do, it goes to the name1 web root (my default, in
Active4D.ini). Even if I include the port number in my URL, it always goes
to the name1 root.

For now, I'll just change my VirtualHosts.ini to exclude the port number
after the wildcard, but I thought I'd pass this along, anyway. Perhaps it
can help some poor soul (even me) in the future.

Doug


On Mon, Oct 2, 2017 at 1:55 PM, Doug Hall <doughall...@gmail.com> wrote:

> Yea us! Umm. Does this mean I get a discount on the upcoming v7? ;-)
>
> On Mon, Oct 2, 2017 at 1:10 PM, David Ringsmuth <davidi...@gmail.com>
> wrote:
>
>> Good job Doug!
>>
>> David Ringsmuth
>>
>> From: Doug Hall
>> Sent: Monday, October 2, 2017 1:03 PM
>> To: Active4D Developer Discussion List
>> Subject: Re: [Active4d-dev] nginx proxy pass
>>
>> I've fixed it. Apparently, since the header information did not include
>> the
>> port number, it resolved to the last known root, which was set by visiting
>> the url with the port number. I fixed it by removing everything after the
>> @
>> (including the port number) in my VirtualHosts.ini file, as follows:
>>
>> /* IP Address        Hostname[:port]                        Language
>> Root                           Default */
>> *                            localhost:8010                           *
>>                 location_1_folder           *
>> *                            name1@                                    *
>>                 location_1_folder           *
>> *                            name2.localhost:8010               *
>>           location_2_folder           *
>> *                            name2@                                    *
>>                 location_2_folder           *
>>
>> Perhaps there's a directive that I could have used to include the port
>> number in the request, but this seems to work, too.
>>
>> Thanks, for taking your time on this! The problem was located and
>> determined to reside between the chair and keyboard. :-)
>>
>> Doug
>>
>> On Mon, Oct 2, 2017 at 11:54 AM, Aparajita Fishman <
>> aparaj...@aparajita.com>
>> wrote:
>>
>> > I'm looking into it.
>> >
>> > > On Oct 2, 2017, at 9:27 AM, Doug Hall <doughall...@gmail.com> wrote:
>> > >
>> > > Okay, I've dug a little further and have more information, now. It
>> > appears
>> > > to be a Virtualhosts.ini issue, not an nginx issue, but I can't be
>> sure,
>> > > because going directly to the URL, (with the port number) bypasses
>> nginx
>> > > altogether, and Active4D servers the correct website. I put a log
>> message
>> > > in the On Web Connection method, to write the header information of
>> the
>> > > request to a log file. First, my VirtualHosts.ini configuration, then
>> the
>> > > request headers, with names changed to obscure the guilty:
>> > >
>> > > VirtualHosts.ini:
>> > >
>> > > /* IP Address        Hostname[:port]                        Language
>> > > Root                           Default */
>> > > *                            localhost:8010
>>  *
>> > >                location_1_folder           *
>> > > *                            na...@.domain.com:8010      *
>> > >  location_1_folder           *
>> > > *                            name2.localhost:8010               *
>> > >          location_2_folder           *
>> > > *                            na...@.domain.com:8010      *
>> > >  location_2_folder           *
>> > >
>> > >
>> > > request header:
>> > >
>> > > 10/2/17 at 09:41:58: Header: GET
>> > > /index.a4d?fuseaction=<location_2_circuit>.main HTTP/1.0
>> > > Accept:
>> > > text/html,application/xhtml+xml,application/xml;q=0.9,
>> > image/webp,image/apng,*/*;q=0.8
>> > > Accept-Encoding: gzip, deflate
>> > > Accept-Language: en-US,en;q=0.8
>> > > Connection: close
>> > > Cookie: c42_cookie_token=07l322blahblah; __utmc=135214817;
>> > > PROD=8BuOGblahblah; _ga=GA1.2.767blahblah; _gid=GA1.2.125blahblah
>> > > Host: name1temp.domain.com
>> > > Referer: http://name1temp.domain.com/
>> > > Upgrade-Insecure-Requests: 1
>> > > User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
>> > > AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100
>> Safari/537.36
>> > > X-Forwarded-For: My_IP_Address
>> > > X-Real-IP: My_IP_Address
>> > >
>> > > Obviously, I've obscured my addresses and port numbers (for security),
>> > but
>> > > I actually did use the "@" in virtualhosts.ini to match "temp" at the
>> end
>> > > of my hostname. Yes, that temporary URL is defined on our local DNS
>> > server.
>> > >
>> > > The point above, is that Active4D is serving circuit2's root folder
>> even
>> > > though the header shows that it's receiving name1temp from my reverse
>> > proxy
>> > > configuration in nginx. Now, there's nothing in the header that says
>> > > anything about the port number, however it wouldn't have logged this
>> > > message had it not been sent to the correct port, so I'm not sure
>> that's
>> > a
>> > > problem.
>> > >
>> > > Also, remember that the reverse happens, too. If I visit
>> > > name1temp.domain.com:8010 (I include the port number in the URL),
>> then
>> > > thereafter, going to either name1temp.domain.com or
>> name2temp.domain.com
>> > > (without the port number), will both resolve to name1's root folder.
>> > When I
>> > > visit name2temp.domain.com:8010. Then, it will always resolve to
>> name2's
>> > > root folder, until I visit name1temp.domain.com:8010 again.
>> > >
>> > > Thanks for any assistance. I'm losing hair, over here. :-(
>> > >
>> > > Doug
>> > >
>> > > On Fri, Sep 29, 2017 at 1:58 PM, Doug Hall <doughall...@gmail.com>
>> > wrote:
>> > >
>> > >> I posted this on the NUG as well, but it may or may not be more
>> relevant
>> > >> here:
>> > >>
>> > >> I am having some problems with my Nginx reverse proxy. I'm running
>> > 4Dv15,
>> > >> and Active4D 6.4r3, using the 4D server shell. I have successfully
>> > >> configured two web roots in Active4D, which run on the same 4D Web
>> > Client,
>> > >> on port 8010. I have two different host names which are pointed to
>> the
>> > same
>> > >> IP address. I'll call them name1.domain.com:8010 and
>> > name2.domain.com:8010.
>> > >> These successfully resolve to the appropriate web root within
>> Active4D,
>> > >> when I put those two urls in my web browser.
>> > >>
>> > >> I set up my proxy in nginx two different ways, and neither of them
>> > >> consistently resolve to the right website:
>> > >>
>> > >> 1: I setup one upstream server and accessed it through proxy_pass
>> from
>> > >> both server definitions:
>> > >>
>> > >> upstream 4d_webclient{
>> > >>    server 127.0.0.1:8010;
>> > >> }
>> > >>
>> > >> server {
>> > >>    listen 80;
>> > >>    server_name name1.domain.com;
>> > >>
>> > >>    location / {
>> > >>       root   /location_1
>> > >>       proxy_pass http://4d_webclient;
>> > >>       ...
>> > >>    }
>> > >> }
>> > >>
>> > >> server {
>> > >>    listen 80;
>> > >>    server_name name2.domain.com;
>> > >>
>> > >>    location / {
>> > >>       root /location_2
>> > >>       proxy_pass http://4d_webclient;
>> > >>       ...
>> > >>    }
>> > >> }
>> > >>
>> > >> Please note that I'm just trying to get the reverse proxy to work.
>> Once
>> > I
>> > >> do that, I'll add SSL requirements, and all the necessary rewrites to
>> > make
>> > >> sure people are redirected to our secured interface.
>> > >>
>> > >> The second way I did it was to create a different upstream for each
>> > >> website, using the DNS names for each, and then calling the
>> appropriate
>> > >> upstream proxy from each server definition:
>> > >>
>> > >> upstream name1_server{
>> > >>    server name1.domain.com:8010;
>> > >> }
>> > >>
>> > >> upstream name2_server{
>> > >>   server name2.domain.com:8010;
>> > >> }
>> > >>
>> > >> ... (the same as above, except replacing 4d_webclient with
>> > name1/2_server
>> > >> at proxy_pass)
>> > >>
>> > >> Both ways gave the same results. After restarting my Web Client and
>> > nginx
>> > >> (just to make sure I start from a clean slate), both
>> name1.domain.comand
>> > >> name2.domain.com resolve to the name1:domain.com:8010 website.
>> However,
>> > >> if I go to name2.domain.com:8010, then both name1.domain.com and
>> name
>> > >> 2.domain.com will resolve to that website. Going to
>> > name1.domain.com:8010 then
>> > >> causes both portless addresses to resolve there, until I visit
>> > >> name2.domain.com:8010 directly again.
>> > >>
>> > >> Obviously, I don't understand the relationship between how nginx
>> deals
>> > >> with upstream declarations and how that passes along to Active4D. Any
>> > help
>> > >> would be appreciated.
>> > >>
>> > >> Doug
>> > >>
>> > > _______________________________________________
>> > > Active4D-dev mailing list
>> > > Active4D-dev@aparajitaworld.com
>> > > http://list.aparajitaworld.com/listinfo/active4d-dev
>> > > Archives: http://active4d-nabble.aparajitaworld.com/
>> >
>> > _______________________________________________
>> > Active4D-dev mailing list
>> > Active4D-dev@aparajitaworld.com
>> > http://list.aparajitaworld.com/listinfo/active4d-dev
>> > Archives: http://active4d-nabble.aparajitaworld.com/
>> _______________________________________________
>> Active4D-dev mailing list
>> Active4D-dev@aparajitaworld.com
>> http://list.aparajitaworld.com/listinfo/active4d-dev
>> Archives: http://active4d-nabble.aparajitaworld.com/
>>
>> _______________________________________________
>> Active4D-dev mailing list
>> Active4D-dev@aparajitaworld.com
>> http://list.aparajitaworld.com/listinfo/active4d-dev
>> Archives: http://active4d-nabble.aparajitaworld.com/
>>
>
>
_______________________________________________
Active4D-dev mailing list
Active4D-dev@aparajitaworld.com
http://list.aparajitaworld.com/listinfo/active4d-dev
Archives: http://active4d-nabble.aparajitaworld.com/

Reply via email to