Re: pgadmin4 running behind nginx

From: Harshal Dhumal <harshal(dot)dhumal(at)enterprisedb(dot)com>
To: Dave Page <dpage(at)pgadmin(dot)org>
Cc: jbiskofski <jbiskofski(at)gmail(dot)com>, pgAdmin Support <pgadmin-support(at)postgresql(dot)org>
Subject: Re: pgadmin4 running behind nginx
Date: 2017-02-01 10:11:09
Message-ID: CAFiP3vzQCS6OQAvCP55bwVEm-Z+pCSxBrFFgqSDMUzMTtGUJ3Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-support

Hi,

When I setup my machine with below server setup and without proxy_redirect
I got slightly different behaviour. In my case all redirects were failing
cause browser was redirecting all request to http while server (nginx) was
configure to serve only https. I didn't get any intermittent state like
pgAdmin4 front page was loading but other requests (like css, js) was
failing.

Issue was when pgAdmin4 app returns redirect (301 /302) response to apache
and apache to nginx; the nginx was returning redirect location header as is
(i.e. with http protocol as apache was configured to accept only http)

To avoid this I need to rewrite location header at nginx (proxy_redirect)
before sending it to browser.

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:81;
proxy_redirect http:// https://;

With above nginx configuration pgAdmin was loading properly.

*Server setup:*

Nginx listing at 443 (https only) and forwarding all requests to apache at
127.0.0.1:81
Apache listing at port 81 (http only) with pgAdmin4 wsgi

--
*Harshal Dhumal*
*Software Engineer*

EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On Mon, Jan 30, 2017 at 4:44 PM, Harshal Dhumal <
harshal(dot)dhumal(at)enterprisedb(dot)com> wrote:

>
>
> --
> *Harshal Dhumal*
> *Software Engineer*
>
> EnterpriseDB India: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
> On Mon, Jan 30, 2017 at 3:33 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>> Hi
>>
>> On Sun, Jan 29, 2017 at 7:33 PM, jbiskofski <jbiskofski(at)gmail(dot)com> wrote:
>> > Hello everyone,
>> >
>> > I have installed pgadmin4 on apache 2.2 with mod_wsgi, and it seems to
>> be
>> > working correctly.
>> >
>> > The problem is I need to run nginx in front of it to enable https and
>> > caching. When I try to access pgadmin with this setup I get errors in
>> the
>> > browser about some elements not being able to be loaded because they are
>> > linked through http instead of https.
>> >
>> > login:1 Mixed Content: The page at
>> > 'https://REMOVED-BY-ME/login?next=/browser/browser.css' was loaded over
>> > HTTPS, but requested an insecure stylesheet
>> > 'http://REMOVED-BY-ME/login?next=%2Fbrowser%2Fbrowser.css'. This
>> request has
>> > been blocked; the content must be served over HTTPS.
>>
>> Harshal, can you take a look at this please? I can see my browser
>> loading http://127.0.0.1:5050/login?next=%2Fbrowser%2Fbrowser.css, but
>> I cannot see why. I must be overlooking something.
>>
>> Yes sure I'll look in to this.
>
>
>> > This is OK at the login page, but once I login, I get the eternal
>> pgadmin is
>> > loading screen and a lot more of these same errors in my browser
>> console.
>> >
>> > My question is, how can I tell pgadmin4 what its base URL is ?
>>
>> You can tell it the directory root (though you shouldn't need to), but
>> I know of no way to give it the base URL. Normally it figures it out
>> itself - but then normally we also wouldn't put Apache behind Nginx,
>> but just setup SSL directly on Apache.
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>

In response to

Responses

Browse pgadmin-support by date

  From Date Subject
Next Message Dave Page 2017-02-01 10:14:08 Re: pgadmin4 running behind nginx
Previous Message Dave Page 2017-02-01 09:25:45 Re: 4th Try: pgadmin4 install, launch fail