Re: Issue with pgAdmin 4 Login Behind NGINX Reverse Proxy at /pgadmin4 Path

From: Shakir Idrisi <shakir(at)webuzo(dot)com>
To: Yogesh Mahajan <yogesh(dot)mahajan(at)enterprisedb(dot)com>
Cc: "pgadmin-support lists(dot)postgresql(dot)org" <pgadmin-support(at)lists(dot)postgresql(dot)org>
Subject: Re: Issue with pgAdmin 4 Login Behind NGINX Reverse Proxy at /pgadmin4 Path
Date: 2025-08-04 07:32:33
Message-ID: CAKZfs-qznRPppd+-m_2fbkp=hW=QSujQ2D8j+BUmSMcREq2-Dw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgadmin-support

HI,

When I access the URL, it will load the SSL certificate properly on the
domain, but why do three requests get a 401 error?

Any idea?

On Mon, Aug 4, 2025 at 12:46 PM Yogesh Mahajan <
yogesh(dot)mahajan(at)enterprisedb(dot)com> wrote:

> Hi,
>
> So the issue is with SSL. I guess this has to do with the nginx
> configuration, not the pgadmin one.
> Generic redirection for non-SSL to SSL should look as below -
>
> server {
> listen 80;
> return 301 https://$host$request_uri;
> }
>
> server {
> listen 443 ssl;
> server_name _;
> ssl_certificate /etc/nginx/server.crt;
> ssl_certificate_key /etc/nginx/server.key;
> ........
>
> location /pgadmin4/ {
> proxy_pass http://unix:/tmp/pgadmin4.sock:/<scripnt_name>/;
>
> .........
>
>
> }
> }
>
>
> Thanks,
> Yogesh Mahajan
> EnterpriseDB
>
>
> On Mon, Aug 4, 2025 at 12:31 PM Shakir Idrisi <shakir(at)webuzo(dot)com> wrote:
>
>> Hi,
>>
>> I have tried the above solution, but it is still not working.
>> I have monitored the log, and it shows that the user is logged in.
>> *2025-08-04 12:23:33,777: INFO pgadmin: Internal user
>> shakir(at)xyz(dot)com <shakir(at)xyz(dot)com> logged in.*
>>
>> However, after logging in, the page appears blank.
>>
>> In the browser’s *Network tab*, most requests return *200*, but about *3
>> requests return 401 Unauthorized*.
>> [image: image.png]
>>
>>
>> conf I'm using, this works when accessed on http, but when I access it on
>> https, it shows a blank page,
>> certificate is installed on the domain.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *location = /pgadmin4 { rewrite ^ /pgadmin4/; }location ^~ /pgadmin4/ {
>> proxy_pass http://unix:/tmp/pgadmin4.sock; proxy_set_header Host
>> $host; 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 $scheme; proxy_set_header X-Forwarded-Host $host;
>> proxy_set_header X-Script-Name /pgadmin4/; proxy_http_version 1.1;
>> proxy_read_timeout 300; proxy_connect_timeout 60;}*
>>
>> On Mon, Aug 4, 2025 at 10:38 AM Yogesh Mahajan <
>> yogesh(dot)mahajan(at)enterprisedb(dot)com> wrote:
>>
>>> Hi,
>>>
>>> Can you please try changing proxy_pass to
>>>
>>> proxy_pass http://unix:/tmp/pgadmin4.sock:/<scripnt_name>/;
>>>
>>> As you are setting the script name. If it does not work, please paste
>>> the complete configuration for nginx, and service file to debug more.
>>>
>>>
>>> Thanks,
>>> Yogesh Mahajan
>>> EnterpriseDB
>>>
>>>
>>> On Sun, Aug 3, 2025 at 10:21 PM Shakir Idrisi <shakir(at)webuzo(dot)com> wrote:
>>>
>>>> Hi,
>>>>
>>>> Any update on this?
>>>>
>>>> On Thu, Jul 31, 2025, 7:27 PM Shakir Idrisi <shakir(at)webuzo(dot)com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am facing an issue when I try to access the pgadmin of https after
>>>>> logging in; it shows a blank page. Can you please help me figure it out?
>>>>>
>>>>> This is the config I am using.
>>>>>
>>>>>
>>>>>
>>>>> *location = /pgadmin4 { return 301 /pgadmin4/;}*
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> *location ^~ /pgadmin4/ { proxy_pass
>>>>> http://unix:/tmp/pgadmin4.sock; proxy_set_header Host
>>>>> $host;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 $scheme;proxy_set_header X-Forwarded-Host
>>>>> $host;proxy_set_header X-Script-Name /pgadmin4;proxy_http_version 1.1;
>>>>> proxy_read_timeout 300; proxy_connect_timeout 60;}*
>>>>>
>>>>> In the browser console of I am getting this error.
>>>>> *Object { message: "Request failed with status code
>>>>> 401", name: "AxiosError", code: "ERR_BAD_REQUEST", config: {…}, request: XMLHttpRequest, response: {…}, status: 401, stack: "".....*
>>>>>
>>>>> On Mon, Jun 23, 2025 at 9:12 AM Yogesh Mahajan <
>>>>> yogesh(dot)mahajan(at)enterprisedb(dot)com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Can you please try modifying '/pgadmin4' like below -
>>>>>> `location = /pgadmin4 {
>>>>>> return 301 /pgadmin4/;
>>>>>> }`
>>>>>>
>>>>>> You can use webserver /kerberos authentication method for automatic
>>>>>> login. With internal authentication method, you will required to enter your
>>>>>> userid/password. You may also use OAuth2.
>>>>>>
>>>>>> Thanks,
>>>>>> Yogesh Mahajan
>>>>>> EnterpriseDB
>>>>>>
>>>>>>
>>>>>> On Fri, Jun 20, 2025 at 1:24 PM Shakir Idrisi <shakir(at)webuzo(dot)com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> One more question, can I use autologin in pgAdmin4? I am using the
>>>>>>> internal method for authentication.
>>>>>>>
>>>>>>> On Fri, Jun 20, 2025 at 11:38 AM Shakir Idrisi <shakir(at)webuzo(dot)com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Thanks, it worked.
>>>>>>>>
>>>>>>>> I am facing an issue when I try to access the pgadmin of https
>>>>>>>> after logging in; it shows a blank page. Can you please help me figure it
>>>>>>>> out?
>>>>>>>>
>>>>>>>> This is the config I am using for the proxy in HTTPS and HTTP
>>>>>>>> vhblock
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *location = /pgadmin4 { rewrite ^ /pgadmin4/; }location ^~
>>>>>>>> /pgadmin4/ { proxy_pass http://unix:/tmp/pgadmin4.sock;
>>>>>>>> proxy_set_header Host $host; 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 $scheme; proxy_set_header
>>>>>>>> X-Forwarded-Host $host; proxy_set_header X-Script-Name /pgadmin4;
>>>>>>>> proxy_http_version 1.1; proxy_read_timeout 300; proxy_connect_timeout
>>>>>>>> 60;}*
>>>>>>>>
>>>>>>>> In the browser console of I am getting this error.
>>>>>>>> *Object { message: "Request failed with status code 401", name:
>>>>>>>> "AxiosError", code: "ERR_BAD_REQUEST", config: {…}, request:
>>>>>>>> XMLHttpRequest, response: {…}, status: 401, stack: "".....*
>>>>>>>>
>>>>>>>> On Mon, Jun 16, 2025 at 9:56 AM Yogesh Mahajan <
>>>>>>>> yogesh(dot)mahajan(at)enterprisedb(dot)com> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> You can use the command 'update-user' for user update.
>>>>>>>>>
>>>>>>>>> To explore more options, you can use the command below with
>>>>>>>>> pgadmin venv.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> `python3.12 setup.py update-user --help `
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Typical command would be -
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> `python3.12 setup.py update-user <user_id> --password
>>>>>>>>> <new_password> --role Administrator --sqlite-path <pgadmin_db_path>`
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Yogesh Mahajan
>>>>>>>>> EnterpriseDB
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sat, Jun 14, 2025 at 5:09 PM Shakir Idrisi <shakir(at)webuzo(dot)com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I hope you're doing well.
>>>>>>>>>>
>>>>>>>>>> pgAdmin is now working properly. Earlier, I ran the setup-db
>>>>>>>>>> command and set the admin username and password.
>>>>>>>>>>
>>>>>>>>>> Now, after reinstalling pgAdmin, I noticed that the data
>>>>>>>>>> directory (including pgadmin.db) was not removed. I would like to either
>>>>>>>>>> reuse the old admin password or reset it if needed.
>>>>>>>>>>
>>>>>>>>>> Is there a way to reset the admin user's password using a command
>>>>>>>>>> in this case?
>>>>>>>>>> Your guidance would be greatly appreciated.
>>>>>>>>>>
>>>>>>>>>> Thank you for your help.
>>>>>>>>>>
>>>>>>>>>> On Tue, Jun 10, 2025, 9:57 PM Shakir Idrisi <shakir(at)webuzo(dot)com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Ok, I will check.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Jun 10, 2025, 5:26 PM Yogesh Mahajan <
>>>>>>>>>>> yogesh(dot)mahajan(at)enterprisedb(dot)com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> I could reproduce the error when I have multiple workers. Maybe
>>>>>>>>>>>> you can try restarting the Guicorn service.
>>>>>>>>>>>> Can you please try once in the private browser window?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Yogesh Mahajan
>>>>>>>>>>>> EnterpriseDB
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Jun 10, 2025 at 3:54 PM Shakir Idrisi <
>>>>>>>>>>>> shakir(at)webuzo(dot)com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> HI,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have used this command, and I have created a systemd file to
>>>>>>>>>>>>> start and stop the service.
>>>>>>>>>>>>>
>>>>>>>>>>>>> *ExecStart=/var/w-data/pgadmin4/pgadmin_venv/bin/gunicorn \*
>>>>>>>>>>>>> * --workers 1 \*
>>>>>>>>>>>>> * --threads=25 \*
>>>>>>>>>>>>> * --bind unix:/tmp/pgadmin4.sock \*
>>>>>>>>>>>>> * --chdir
>>>>>>>>>>>>> /var/w-data/pgadmin4/pgadmin_venv/lib/python3.11/site-packages/pgadmin4 \*
>>>>>>>>>>>>> * --umask 007 \*
>>>>>>>>>>>>> * pgAdmin4:app*
>>>>>>>>>>>>>
>>>>>>>>>>>>> Also, when I try multiple times then it will log in and show a
>>>>>>>>>>>>> blank dashboard, or sometimes it will show a dashboard but not work
>>>>>>>>>>>>> properly. In the console log, I see the following error
>>>>>>>>>>>>>
>>>>>>>>>>>>> [image: image.png]
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Jun 10, 2025 at 3:26 PM Yogesh Mahajan <
>>>>>>>>>>>>> yogesh(dot)mahajan(at)enterprisedb(dot)com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Can you please share your guicorn command?
>>>>>>>>>>>>>> How many workers are you spawning? It should be 1.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>> Yogesh Mahajan
>>>>>>>>>>>>>> EnterpriseDB
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Jun 10, 2025 at 12:34 PM Shakir Idrisi <
>>>>>>>>>>>>>> shakir(at)webuzo(dot)com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I've installed *pgAdmin 4* on my Linux server and
>>>>>>>>>>>>>>> configured it behind *Gunicorn and NGINX*, accessible at:
>>>>>>>>>>>>>>> https://domain.com/pgadmin4/.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The login page loads correctly. However, after entering
>>>>>>>>>>>>>>> valid credentials, I'm redirected back to the login page without any error
>>>>>>>>>>>>>>> message. Occasionally, I see a *CSRF token* error, which
>>>>>>>>>>>>>>> disappears after a page refresh, but the login still fails.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> In the browser console or network tab, I sometimes see 401
>>>>>>>>>>>>>>> errors or issues loading static assets.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Here's the NGINX configuration I'm currently using to
>>>>>>>>>>>>>>> reverse proxy pgAdmin via a Unix socket:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *nginx*
>>>>>>>>>>>>>>> location /pgadmin4/ {
>>>>>>>>>>>>>>> proxy_pass http://unix:/tmp/pgadmin4.sock:/;
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> # Proxy headers
>>>>>>>>>>>>>>> proxy_set_header Host $host;
>>>>>>>>>>>>>>> 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 $scheme;
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> # Inform pgAdmin it's served under a subpath
>>>>>>>>>>>>>>> proxy_set_header X-Script-Name /pgadmin4;
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> # Optional: timeouts and static asset handling
>>>>>>>>>>>>>>> proxy_read_timeout 300;
>>>>>>>>>>>>>>> proxy_connect_timeout 60;
>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Could you please advise:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Is there something wrong with the proxy setup?
>>>>>>>>>>>>>>> 2.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Do I need to handle static assets or cookies differently
>>>>>>>>>>>>>>> when using a subpath (/pgadmin4)?
>>>>>>>>>>>>>>> 3.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Are there any additional settings required in the
>>>>>>>>>>>>>>> pgAdmin config to work correctly behind a sub-URI with NGINX?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks in advance for your guidance.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>

In response to

Responses

Browse pgadmin-support by date

  From Date Subject
Next Message Yogesh Mahajan 2025-08-04 08:05:08 Re: Issue with pgAdmin 4 Login Behind NGINX Reverse Proxy at /pgadmin4 Path
Previous Message Yogesh Mahajan 2025-08-04 07:16:04 Re: Issue with pgAdmin 4 Login Behind NGINX Reverse Proxy at /pgadmin4 Path