安装部署
概述
Nginx Proxy Manager (NPM) 是一个基于 Nginx 的反向代理管理工具,旨在简化 Nginx 的设置和管理。它提供了一个直观的 Web 界面,利用户可以轻松地设置和管理反向代理、SSL 证书、访问控制等功能。
官网:https://nginxproxymanager.com/
GitHub:https://github.com/NginxProxyManager/nginx-proxy-manager
安装Docker和Docker Compose
假如你的系统上还没有安装Docker和Docker Compose,你可以根据你的操作系统参考官方文档进行安装:
Docker安装文档
Docker Compose安装文档
创建项目目次
创建一个目次来存放Docker Compose文件和相关设置文件:
- mkdir nginx-proxy-manager
- cd nginx-proxy-manager
复制代码 创建Docker Compose文件
在项目目次中创建一个名为docker-compose.yml的文件,并添加以下内容:
- services:
- app:
- image: 'jc21/nginx-proxy-manager:latest'
- restart: unless-stopped
- ports:
- - '80:80'
- - '81:81'
- - '443:443'
- volumes:
- - ./data:/data
- - ./letsencrypt:/etc/letsencrypt
复制代码 启动
在项目目次中运行以下下令启动Nginx Proxy Manager,这将下载所需的Docker镜像并启动容器。
- docker-compose up -d
- # 如果使用docker-compose-plugin
- docker compose up -d
复制代码 数据存储方式说明
Nginx Proxy Manager默认利用SQLite数据库来存储其数据,包括设置、代理主机信息、SSL 证书等。除此之外,Nginx Proxy Manager还可以利用MySQL来进行数据存储。
以下是一个docker-compose.yml文件,Nginx Proxy Manager利用MySQL进行数据存储的示例
- version: '3.8'
- services:
- app:
- image: 'jc21/nginx-proxy-manager:latest'
- restart: unless-stopped
- ports:
- # These ports are in format <host-port>:<container-port>
- - '80:80' # Public HTTP Port
- - '443:443' # Public HTTPS Port
- - '81:81' # Admin Web Port
- # Add any other Stream port you want to expose
- # - '21:21' # FTP
- environment:
- # Mysql/Maria connection parameters:
- DB_MYSQL_HOST: "db"
- DB_MYSQL_PORT: 3306
- DB_MYSQL_USER: "npm"
- DB_MYSQL_PASSWORD: "npm"
- DB_MYSQL_NAME: "npm"
- # Uncomment this if IPv6 is not enabled on your host
- # DISABLE_IPV6: 'true'
- volumes:
- - ./data:/data
- - ./letsencrypt:/etc/letsencrypt
- depends_on:
- - db
- db:
- image: 'jc21/mariadb-aria:latest'
- restart: unless-stopped
- environment:
- MYSQL_ROOT_PASSWORD: 'npm'
- MYSQL_DATABASE: 'npm'
- MYSQL_USER: 'npm'
- MYSQL_PASSWORD: 'npm'
- MARIADB_AUTO_UPGRADE: '1'
- volumes:
- - ./mysql:/var/lib/mysql
复制代码 Web管理控制台
访问Web界面
一旦容器启动,你可以通过浏览器访问Nginx Proxy Manager的Web界面。默认所在是http://<your-server-ip>:81。
登录
首次登录时,利用以下默认凭据
- Email: admin@example.com
- Password: changeme
复制代码 登录后,系统会提示更改默认密码。
根本利用
域名与IP绑定
在域名管理服务商那里添加域名与IP的绑定关系。
这里添加一条DNS解析,也就是创建一个二级域名:范例:A、名称:npm、IP:服务器IP。
这表示:访问二级域名npm.域名即可访问服务IP。
添加代理主机
在Web界面中,可以添加新的代理主机来管理反向代理设置。
点击Proxy Hosts选项卡
然后点击Add Proxy Host按钮
在添加代理主机的页面中,填写以下信息:
设置说明
- Domain Names :填写网站域名,需要上面做好DNS解析,把域名绑定到服务器IP
- Scheme : 选择HTTP或HTTPS。默认http即可,除非有自签名证书
- Forward Hostname/IP :填写要代理到的目标主机名或IP地址,或者Docker容器内部IP(NPM和程序服务在同一台服务器上)
- Forward Port:填写目标主机的端口号,这里是NPM管理界面81端口
- Cache Assets :缓存,根据需求选择打开
- Block Common Exploits: 阻止常见的漏洞,根据需求选择打开
- Websockets Support :WS支持,根据需求选择打开
- Access List: NPM自带的一个限制访问功能
复制代码 注意:
这里填的是172.17.0.1,为Docker容器内部的IP所在。可以通过下面的下令查询:
- [root@vm ~]# ip addr show docker0
- 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
- link/ether 02:42:39:63:84:15 brd ff:ff:ff:ff:ff:ff
- inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
- valid_lft forever preferred_lft forever
复制代码 保存并应用设置
填写完全部须要的信息后,点击Save按钮保存设置。Nginx Proxy Manager会主动生成并应用Nginx 设置文件。
此时,浏览器访问二级域名http://<your-server-domain>即可访问到Nginx Proxy Manager的管理界面
一键申请SSL证书
申请SSL证书,让网站支持https访问。
选择创建一个新的证书,勾选强制SSL,填写邮件、同意条款,点击Save即可申请SSL证书
此时,浏览器就可以利用https访问,并提示毗连安全
申请泛域名SSL证书
泛域名SSL证书就是指:申请一个二级域名*.xxx.com证书,这样二级域名无论是什么都可以用这个证书,不再必要为每一个二级域名申请一个SSL证书。
获取API令牌
这里利用Cloudflare托管域名,故登录Cloudflare,获取域名服务商的API令牌
- API令牌:在Cloudflare仪表板中,点击右上角的头像,然后选择我的个人资料,在左侧菜单中,选择API 令牌
- 创建新的API令牌:点击创建令牌按钮
- 选择API令牌模板:Cloudflare提供了一些预定义的模板,可以选择其中之一,也可以自定义令牌。
- 根据API令牌用途选择不同模板:对于Nginx Proxy Manager,通常选择编辑区域DNS模板是一个不错的选择。
复制代码 利用模板后,只必要修改区域资源项,选择要操作的域名即可
得到如下提示,获得API令牌
添加泛域名证书
选择 SSL Certificates -> Add SSL Certificate -> Let's Encrypt选项
填写域名: *.域名或域名 *.域名、邮箱
勾选:Use a DNS Challenge、选择DNS提供商:Cloudflare,根据模板提示填入服务商处获取的API令牌
勾选同意条款,然后保存即可
新建代理
进入Proxy Hosts,新建一个反向代理:指定一个二级域名,同时指定某个程序服务端口
证书设置这里指定泛域名证书
验证
浏览器以https方式访问指定的二级域名,不出不测即可访问对应的服务
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |