惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

秋澪的博客

MediaWarp说明文档 | 秋澪的博客 MacBook Air M1 2025年211工科本科生体验报告 | 秋澪的博客 Conda安装以及基础使用方法 | 秋澪的博客 利用CloudFlare搭建测速网站 | 秋澪的博客 Fcricle踩坑记录 | 秋澪的博客 FastCDN说明文档 | 秋澪的博客 利用CloudFlare搭建镜像站 | 秋澪的博客 Docker入门教程 | 秋澪的博客 UnlockMusic音乐解锁搭建教程 | 秋澪的博客 Excalidraw搭建教程 | 秋澪的博客 AutoFilm说明文档 | 秋澪的博客 利用CDN加速并保护站点 | 秋澪的博客 校园网碎碎念 | 秋澪的博客 三朝元老再就业——百元机装机体验暨P104-100快速上手 | 秋澪的博客 将M.2固态硬盘设为群晖存储池 | 秋澪的博客 Git快速上手指南 | 秋澪的博客 利用Ventoy打造最强硬盘 | 秋澪的博客 为Hexo博客添加后台管理系统 | 秋澪的博客 MarkDown笔记软件推荐 | 秋澪的博客 免费的云数据库推荐 | 秋澪的博客 使用BetterNCM美化网易云 | 秋澪的博客 Armbian手把手玩机指南01-系统刷入并安装可视化桌面 | 秋澪的博客 IOS旧版本应用推荐 | 秋澪的博客 51单片机学习记录-01 | 秋澪的博客 51单片机学习记录-00 | 秋澪的博客 免费域名注册 | 秋澪的博客 Hexo重装记录 | 秋澪的博客 利用CloudFlare创建域名邮箱 | 秋澪的博客 在Render上部署Alist | 秋澪的博客 Docker命令大全 | 秋澪的博客
Nginx-Proxy-Manager问题补充:DNSPod证书申请错误、NPM端口...
标签 · 2023-05-07 · via 秋澪的博客

此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

前言

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。作为有公网 IP 的NAS用户常用其为NAS进行反向代理服务。使用反向代理实现多域名访问不同应用,规避IP+端口访问,不仅免去记端口号的麻烦,还可以只留下一个端口进行访问,提高了局域网环境的安全性。与此同时,还可以利用 NAS 作为跳板,反向代理其他的内外设备,例如路由器后台等服务。
原生 Nginx 并没有 WebUI ,而是使用配置文件进行配置,但对于普通用户来说自己写Config难度较高,因此大多数人使用带有 WebUI的Nginx-Proxy-Manager 进行反向代理,但是NPM本身有些 BUG 导致使用体验下降,今天则带来教程解决这些问题。Nginx-Proxy-Manager 的安装教程可以看往期教程利用FRP和Nginx-Proxy-Manager为内网设备提供内外穿透服务

大多数人的NAS使用的是家用带宽,普通情况下运营商会封锁80和443端口,因此在使用反向代理时往往会使用其他的端口进行配置,而NPM中的免费证书申请并不能使用80以外的端口,所有大多数人使用DNS验证进行域名验证,而其中DNSPod又是国人较为常用的域名解析服务商。而NPM中自带的SSL证书申请脚本在申请DNSPod域名证书时会失败。此问题在2.9.19版本开始就已经存在,原因是zope引起的,由于ARM架构一直安装失败所以无法打包到镜像中,建议使用如下方法修复此问题

进入容器命令行环境

Uraid用户

Unraid用户可以先进入Unraid的WebUI,直接在【Docker】页面,点击NPM的头像,再点击【控制台】进入容器的命令行界面

其他用户

其他用户可以先使用SSH连接NAS,输入以下命令查看容器名

1
docker ps

这里假设容器名为Nginx-Proxy-Manager
输入以下命令进入容器内部

1
2
3
docker exec -it 容器名 bash
# 将容器名替换为你的容器名
# 我这里的容器名为【Nginx-Proxy-Manager】,则应输入:docker exec -it Nginx-Proxy-Manager bash

安装zope

依次输入以下命令

1
2
3
python3 -m pip install --upgrade pip
pip install certbot-dns-dnspod
pip install zope

等待安装完成,退出容器:

1
exit

最后刷新浏览器重新申请DNSPod域名证书即可

端口丢失

相信有很多小伙伴在使用NPM反代的时候经常会出现一些站点代理后会出现端口丢失(自动跳转到80端口)、502错误,或者需要加路径才能访问。
以unraid登录页面为例,添加一个站点,填写外网访问的域名,和内网代理ip、端口,启用ssl,选择对应证书,一般网站到此之后,点保存就能够愉快的进行访问了,但是unraid页面就不行了,登录页面并没有很顺利打开。此处可能会碰到各种错误,有人可能会端口丢失,有人可能需要手动在域名后面加上 /unraid才能打开页面等情况。原因是我们使用的是非标准80端口,访问unraid页面的时候有个自动重定向的动作,导致路径和端口丢失。

解决方法

Unraid

在配置反代页面时,点击高级/Advanced
输入以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
location / {
proxy_pass https://192.168.2.2:4443/;
proxy_set_header Host $http_host;
proxy_redirect http:// https://;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_http_version 1.1;
}

需要改动的只有第2行,将http(s)、IP和端口修改为自己需要代理的真实地址

NextCloud

其实NextCloud的端口丢失问题和NPM没有关系不大(主要是在第一次登录时NPM把端口省去了导致NextCloud获取URL错误)
这里主要是修改NextCloud的配置文件即可正常访问
找到下面这个文件(可以直接进入容器内部进行修改,也可以直接在映射出来的目录中修改

1
/var/www/html/config/config.php

大概在24行附近,有这么一个参数

1
2
3
array (
0 => '192.168.66.6',
),

这个就代表了第一次登录是从192.168.66.6(应该是将NextCloud的端口映射出来的主机地址)这个局域网地址登录的
假设我需要用nextcloud.akimio.top这个域名和端口号2580访问我的NextCloud服务,也就是说URL为https://nextcloud.akimio.top:2580,在正常设置完NPM的反向代理后还需要在之前找到文件改成下面这样:

1
2
3
4
5
6
7
array (
0 => '192.168.66.6',
1 => 'nextcloud.akimio.top', # 这里新增一行,代表这个域名(地址)可以访问
),
'overwritehost' => 'nextcloud.akimio.top', # 这里代表将服务的域名重写为nextcloud.akimio.top
'overwriteprotocol' => 'https', # 这里代表使用https加密访问
'overwrite.cli.url' => 'http://nextcloud.akimio.top:2580', # 这里为访问URL,填写方式为:http + 域名 + : + 端口,如果上一步有写https的参数的话这里的http会被自动替换成htts访问;如果没有写上一步的那个参数就会默认使用http访问

这里之后重启一下NextCloud容器就应该可以在浏览器正常访问了,APP登录时也不会丢失端口造成登录错误

兰空图床Lsky-pro

NPM修改

兰空图床在反代时也会丢失端口,先正常配置NPM的反向代理,然后在自定义位置处选择添加一个位置,再点击一下旁边的小齿轮
定义位置那里填/代表该反向代理所有路径都要遵守这个规则
协议转发主机/IP转发端口就按自己的实际情况填写就好,例如http172.18.0.3:2280(前面反代怎么填,这里就怎么填)
然后那个方框就填入下面这行参数就好

1
proxy_set_header X-Forwarded-Host $http_host;

内部配置修改

找到下面这个文件(可以直接进入容器内部进行修改,也可以直接在映射出来的目录中修改

1
/var/www/html/.env

然后修改APP_URL这个参数,并新增一个参数ASSET_URL,值都填写外部访问的URL,例如:

1
2
APP_URL=https://lsky.akimio.top:2580
ASSET_URL=https://lsky.akimio.top:2580

然后还是重启兰空图床容器就应该可以正常访问了

尾巴

PS:不知道是什么原因,Unraid主页可以正常访问,但是NextCloud和兰空图床访问有问题(2023.5.7)
目前我已经找到解决方法(详细请看上文),如果大家还遇到某个容器反代错误也欢迎在下面留言