Press "Enter" to skip to content

NPM卡登录页面,显示bad gateway

最近发现搭建的npm(nginx-proxy-manager)没法登录了。

趁机研究了下,发现NPM自身服务的配置在 /etc/nginx/conf.d/production.conf

# Admin Interface
server {
        listen 81 default;
        listen [::]:81 default;

        server_name nginxproxymanager;
        root /app/frontend;
        access_log /dev/null;

        location /api {
                return 302 /api/;
        }

        location /api/ {
                add_header            X-Served-By $host;
                proxy_set_header Host $host;
                proxy_set_header      X-Forwarded-Scheme $scheme;
                proxy_set_header      X-Forwarded-Proto  $scheme;
                proxy_set_header      X-Forwarded-For    $remote_addr;
                proxy_pass            http://127.0.0.1:3000/;

                proxy_read_timeout 15m;
                proxy_send_timeout 15m;
        }

        location / {
                index index.html;
                if ($request_uri ~ ^/(.*)\.html$) {
                        return 302 /$1;
                }
                try_files $uri $uri.html $uri/ /index.html;
        }

我们看到api他转发到一个 http://127.0.0.1:3000

看起来像是一个node服务,看了下官方源码,后端服务在 /app目录下面,我们切换到 /app目录之后执行 node index.js,会发现有个启动过程,然后卡在:

[9/27/2024] [7:40:15 AM] [Global   ]          info      Using Sqlite: /data/database.sqlite
[9/27/2024] [7:40:15 AM] [Migrate  ]          info      Current database version: none
[9/27/2024] [7:40:20 AM] [Setup    ]          info      Added Certbot plugins certbot-dns-dnspod~=0.1.0 
[9/27/2024] [7:40:20 AM] [Setup    ]          info      Logrotate Timer initialized
[9/27/2024] [7:40:20 AM] [Setup    ]          info      Logrotate completed.
[9/27/2024] [7:40:20 AM] [IP Ranges]          info      Fetching IP Ranges from online services...
[9/27/2024] [7:40:20 AM] [IP Ranges]          info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json

似乎卡在这个 ip-ranges上面了,然后我们去官方的issue里面搜了下,发现:

https://github.com/NginxProxyManager/nginx-proxy-manager/pull/4021

Fix the stuck at startup causing 502 bad gateway. #4021

大概就是npm启动的时候会去调用AWS接口拉一个什么ip数据库,然后有些云服务商屏蔽了AWS接口(比如腾讯云)。然后启动脚本就卡在这里,启动就失败了,然后相当于npm的管理后台就没启动起来。。

解决办法:我看issue里面的大概直接粗暴的帮 /app/index.js里面的 .then(internalIpRanges.fetch) 给删掉了。

		.then(() => {
			return apiValidator.loadSchemas;
		})
		//.then(internalIpRanges.fetch)
		.then(() => {

			internalCertificate.initTimer();

那么我们就简单了,等官方处理,或者自己本地进到容器里面帮这个文件里面这一行代码先注释掉再说。

启动中联网下载东西也是没谁了,这玩意如果有更新数据需求,正儿八经应该做成管理后台功能,点一下更新什么的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注