From: | Dave Page <dpage(at)pgadmin(dot)org> |
---|---|
To: | Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com> |
Cc: | Harshal Dhumal <harshal(dot)dhumal(at)enterprisedb(dot)com>, 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:37:57 |
Message-ID: | CA+OCxoy=tv0hrinDWbUsvm0vhnJngFxZaFL5_xnm4KRpEUyzQQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgadmin-support |
On Wed, Feb 1, 2017 at 10:20 AM, Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com
> wrote:
> On Wed, Feb 1, 2017 at 3:44 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>> On Wed, Feb 1, 2017 at 10:11 AM, Harshal Dhumal
>> <harshal(dot)dhumal(at)enterprisedb(dot)com> wrote:
>> > 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
>>
>> Nice - thanks Harshal.
>>
>> Were you able to see why we're trying to load
>> http://127.0.0.1:5050/login?next=%2Fbrowser%2Fbrowser.css ? I can
>> reproduce that just by pointing my browser at a dev server (e.g.
>> werkzeug). No Apache or nginx needed.
>>
> I think - I spotted it.
>
> We've the 'login_required' decorated for the browser_css function.
> And, It has been referred in base.html template, which is also used in the
> login.html.
>
> Please try to remove '@login_required' decorator from the 'browser_css'
> function, found in the 'web/pgadmin/browser/__init__.py' file.
>
Good shout - that fixes that problem, but leaves us with an http/500 error
because browser_css loads per-user preferences. I think we need to
conditionally include this block from base.html:
<!-- View specified stylesheets -->
{% for stylesheet in current_app.stylesheets %}
<link type="text/css" rel="stylesheet" href="{{ stylesheet }}">
{% endfor %}
But I don't have time to investigate further right now as I have to leave
for FOSDEM soon.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Rich Shepard | 2017-02-01 13:39:12 | Re: Building pgadmin4-1.1: Python3 virtual wrapper |
Previous Message | Ashesh Vashi | 2017-02-01 10:20:12 | Re: pgadmin4 running behind nginx |