【Docker系列】最好用的反向代理 ——Nginx Proxy Manager
ahcoder 2025-07-06 08:37 2 浏览
1. 介绍
访问VPS或者网站服务器需要 域名+端口号,之所以日常使用不显示是因为端口80(http访问端口),端口443(https访问端口),会自动加上该默认端口。
Nginx Proxy Manager 是一个基于 Nginx 的代理管理器,自带面板,交互操作,可一键申请ssl证书并自动续期。可以通过不同的二级域名来访问主机上的不同端口号,相当于前级识别分类,根据域名不同来匹配不同的端口号。
2. 需要环境
2.1 硬件需求
主流服务器器配置均可,消耗资源极小。
2.2 软件需求
需要Linux系统,Docker、Docker-Compose,环境安装见《必备的Docker和Dockercompose环境安装》
3.部署
3.1 Docker-Compose方式安装
1
# 切换到root权限
sudo -i
# 创建数据文件夹
mkdir /etc/docker/npm && cd /etc/docker/npm
2
#编辑配置文件
vi docker-compose.yml
3
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 不建议修改端口,作为门户的入口端口
- '81:81' # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
- '443:443' # 不建议修改端口,作为门户的SSL入口
volumes:
- ./data:/data # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
- ./letsencrypt:/etc/letsencrypt # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建
复制上述内容后,shift + ins粘贴内容进配置文件,输入 :wq 退出保存。
#启动安装服务
docker-compose up -d
具体配置文件在 /etc/docker/npm/_host 文件夹下面的 *.conf文件
3.2 使用配置
3.2.1 登录NPM
使用 http://x.x.x.x:81 就可以访问 NPM 的后台,局域网的替换成局域网IP,远端服务器替换为服务器ip(需要打开安全策略组里面的81端口)。
默认登陆的用户名:admin@example.com 密码:changeme
登录后会提示修改密码。
3.2.2 NPM反向代理设置
3.2.2.1 添加一个反向代理
点击 Proxy Hosts → 点击Add Proxy Host 在弹出对话框中填写内容
Domain Names :网站的域名,需要先在域名商设置好DNS-IP解析,国内可以用阿里云,腾讯,cloudflare,cloudns
Scheme :默认 http ,自有签名证书可选https
Forward Hostname/IP :填入服务器的 IP,或 Docker 容器内部的 IP(如果 NPM 和 跳转服务器搭建在同一台上的话)
# 查询docker IP地址
ip addr show docker0
Forward Port:映射出的端口(如果填写服务器IP,需打开安全策略组将端口暴露出来填写,docker地址不需要暴露端口)
Cache Assets :缓存,可以选择打开
Block Common Exploits: 阻止常见的漏洞,可以选择打开
Websockets Support :WS 支持,可以选择打开
Access List: NPM 自带的一个限制访问功能,碰到攻击可以设置。
3.2.2.2 申请SSL证书
这里可以申请 ` *.dreamwork.top` 的泛域名的证书,需要通过NPM申请证书界面申请,并通过dns解析服务商秘钥申请成功。
3.2.3 docker内容器使用同一网络
在使用 Nginx Proxy Manager 的时候,可以不用让每一个容器都暴露一个端口,可以使用 Docker network 来将容器放到同一个网络下,然后使用名字来关联。
创建网络:
docker network create nginx-proxy
然后分别将 Nginx Proxy Manager 和其他服务放到同一个网络下,添加如下配置:
networks:
default:
external:
name: nginx-proxy
以 Portainer 举例:
version: '3'
services:
portainer:
image: portainer/portainer
privileged: true
volumes:
- './data:/data'
- '/var/run/docker.sock:/var/run/docker.sock'
restart: unless-stopped
networks:
default:
external:
name: nginx-proxy
在配置中可以看到 Portainer 没有显示定义暴露的 9000 端口,这个时候可以在 Nginx Proxy Manager 后台,通过 portainer 作为 hostname 来创建反向代理,关联到这个容器(docker分配给服务的IP,端口为默认端口)。 这种方法只需要保证每一个容器都有一个唯一的名字即可。
3.2.3 通过NPM访问静态网站
首先添加一个额外的 Volume:
/opt/website:/var/www/website Forward Hostname/IP 填写服务器 IP 地址。
在 Advanced 中配置:
location / {
root /var/www/website;
}
保存。然后将静态网站内容放到宿主机的 /opt/website 中即可。
4.注意事项
4.1 NPM忘记密码
官方解决方案见
https://github.com/NginxProxyManager/nginx-proxy-manager/issues/230
进入
#获得root权限
sudo -i
#当时安装npm的目录
cd /etc/docker/npm
#读取docker-compose文件
cat /etc/docker/npm/docker-compose.yml
在文件中最初有数据库的密码
docker ps 查看容器
连接数据库
mysql -u root -p
输入数据库密码
USE xx;
UPDATE user SET is_deleted=1;
quit
exit
重启docker
docker restart nginx-proxy-manager
密码恢复到初始密码,进去界面重新设置即可
默认登陆的用户名:admin@example.com 密码:changeme
相关推荐
- Rocky Linux 9 系统下安装Nginx(linux怎么安装nginx)
-
RockyLinux9系统下安装Nginx大家好,我是星哥,Nginx凭借其高性能、低资源消耗以及优秀的反向代理能力,已成为Web服务部署的主流选择之一。本文将带你在RockyLinu...
- 你的网站正在裸奔!多个被99%开发者忽略的Nginx配置漏洞
-
"您的服务器已被攻陷,数据库正在导出"——当这条告警弹出时,老王正在茶水间泡咖啡。从黑客发起攻击到拿到核心数据,总共耗时4.7秒,比他点的奶茶送到还快。更讽刺的是,这个价值百万的漏洞并...
- Rocky Linux Nginx 自动更新免费 SSL,全流程实战
-
Let’sEncrypt是由非营利性组织InternetSecurityResearchGroup(ISRG)推动的免费、自动化、开源的证书颁发机构(CA)。它采用ACME协议,让...
- 充分利用站长平台的改版工具降低更换域名的影响
-
boke112导航在前天进行了更换站名和域名,大家都知道更换域名后会带来严重的后果,几乎可以说一朝回到解放前。我也一直都以为只能等搜索引擎慢慢恢复,没想到百度站长平台已经有了这么好的改版工具让我们尽可...
- 别踩雷!外贸人选域名这事,真能决定你独立站是起飞还是扑街
-
有些事,看着不大,结果却能直接决定你是不是要走弯路。域名这事,就是其中一个。说句实话,我见太多外贸人,建站那一刻啥都不想,就随手敲了个域名,“反正能访问就行嘛”。可半年后一看——谷歌排名上不去、客户不...
- 站内SEO优化需要重视这16点才能提升网站排名!
-
1.H标签网站单个页面的H标签尽量控制在一定数量,常见的用法是h1标签1次,h2标签2次,h3标签用3词,也有很大部分的网站不用h1标签直接使用h2标签,这种情况常见于门户站、新闻站等。2.Alt描述...
- Nginx反向代理之proxy_redirect指令
-
proxy_redirect该指令是用来重置头信息中的"Location"和"Refresh"的值。语法:proxy_redirectredirectreplace...
- 2023近期前端面试遇到的题(前端初级)
-
以下面试题不分先后顺序1、vue实现双向数据绑定原理是什么?八股文不想写了自己百度吧...2、v-model语法糖是怎么实现的3、Hash和history有什么区别Hash模式1、定义hash模式是...
- Nginx报404错误的详细解决方法(nginx报错401)
-
最近打开网站看看结果提示:nginx404notfound,所以这篇文章主要给大家介绍了关于Nginx报404错误的简单解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下宝塔服务器面板,...
- 基于windows的nginx基础使用(windows nginx常用命令)
-
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务。易用性强,学习成本低,可维护性高。传送门。欢迎使用 下载nginx/Windows-1.6.3的版...
- 网站为什么要改版,改版网站需要注意什么
-
在平时接触网站项目的时候,会遇到一些客户说,我想要改版网站,网站页面风格需要改变,其实这个不仅是设计页面,前端接入,后台开发代码也要重写,相当于就是重新建站,做个新的设计风格的网站。网站为什么要改版?...
- nginx 代理转发 http https 基本用法
-
nginx配置http最简单的用法;server{#监听的端口listen80;#绑定的域名,多个用空格分开即可。server_nameprvt.c...
- 【Docker系列】最好用的反向代理 ——Nginx Proxy Manager
-
1.介绍访问VPS或者网站服务器需要域名+端口号,之所以日常使用不显示是因为端口80(http访问端口),端口443(https访问端口),会自动加上该默认端口。NginxProxyManag...
- 别小看301重定向,玩明白了SEO真能快人一步
-
在做SEO的路上,有些“老套路”看着平平无奇,但用对了真能让你排名超车。今天想跟你聊的就是这么一个老牌选手——301重定向。很多人一听到“301”就头疼,要么觉得是服务器的事,太技术;要么觉得用处不大...
- 解析:网站降权后是否可以启动新域名
-
站长们都有过网站降权的经历,很多人会选择重新做站,抛弃老域名,觉得降权就是被百度打入谷底、无法翻身。张玉淦博客之前也被降权,排除优化过度,原因很简单,修改了标题,添加“福建”两个字,结果被搜索引擎盯上...
- 一周热门
- 最近发表
-
- Rocky Linux 9 系统下安装Nginx(linux怎么安装nginx)
- 你的网站正在裸奔!多个被99%开发者忽略的Nginx配置漏洞
- Rocky Linux Nginx 自动更新免费 SSL,全流程实战
- 充分利用站长平台的改版工具降低更换域名的影响
- 别踩雷!外贸人选域名这事,真能决定你独立站是起飞还是扑街
- 站内SEO优化需要重视这16点才能提升网站排名!
- Nginx反向代理之proxy_redirect指令
- 2023近期前端面试遇到的题(前端初级)
- Nginx报404错误的详细解决方法(nginx报错401)
- 基于windows的nginx基础使用(windows nginx常用命令)
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- linux 防火墙 (33)
- linux 镜像 (34)
- linux ip地址 (34)
- linux 用户查看 (33)
- nginx配置 解析 (37)
- nginx 频率限制 (34)