今天在浏览 GitHub 的时候,我发现了一个用于管理 Nginx 代理服务器的开源工具项目------Nginx Proxy Manager。作为一名后端开发人员,这个项目对我来说无疑是一个非常不错的发现。以往,当我们部署一些开源工具或者自己编写的小项目和小网站时,都需要手动修改 Nginx 的配置文件。有时候,一些项目不再使用了,我们又必须登录服务器,注释掉这些配置,这一过程相当繁琐。而配置免费 SSL 证书更是需要花费不少时间。但有了这个项目之后,这些繁琐的配置工作变得轻松起来。接下来,我将向大家介绍一下这个项目。
nginx-proxy-manager.jpg
项目简介
该项目作者提供了一个 Docker 镜像,使您能够轻松地将在家中或其他地方运行的网站转发到外部,同时提供免费的 SSL,无需对 Nginx 或 Letsencrypt 有太多了解。以下是该项目作者的初衷:"我创建这个项目是为了满足我个人的需求,为用户提供一种简单的方法来实现带有 SSL 终止的反向代理主机,而且必须简单到甚至一只猴子都能做到。这个目标从未改变。虽然可能有一些高级选项,但它们是可选的,这个项目应尽可能简单,以降低入门的门槛。"
目前这个项目在github上已经有19.1k 的star
_2024032320550502c67684d86434b5.jpg
项目文档地址: https://nginxproxymanager.com/
github地址:https://github.com/NginxProxyManager/nginx-proxy-manager
项目部署
作者已经在文档中给我们提供好了docker-compose.yml文档,我们只需把这个文件复制到我们的服务器上启动即可:
bash
version: '3.8'
services:
nginx-proxy:
image: 'jc21/nginx-proxy-manager:latest'
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
这个项目其实就是一个nginx外加一个配置的管理后台,其中这三个端口分别是:
- 80: nginx的http代理端口
- 443:nginx的https代理端口
- 81:管理后台web项目的端口
我们创建好docker-compose.yml文档之后使用以下命令启动:
docker-compose up -d
如果不出啥意味的话我们这个项目就已经正常启动了
项目使用
- 登录系统
我们启动好项目之后在浏览器中访问 http://192.168.10.171:81 ,会出现以下登录页面
_20240323192321.jpg
默认用户名和密码:
makefile
Email: admin@example.com
Password: changeme
- 修改admin信息
登录之后会让我们修改admin的信息:
_20240323192331.jpg
- 修改默认密码
修改之后会继续让我们修改用户的默认密码:
_20240323192427.jpg
修改完之后我们就可以使用了
_20240323211422.jpg
- 配置http代理
当然,我们使用这个项目最大的功能就是nginx配置代理,我们点击 Hosts-->Proxy Hosts,
_20240323211810.jpg
在以下页面配置我们的代理:
_20240323212646.jpg
Details
Domain Names : 添加我们监听的域名或者服务
Scheme/Forward Hostname/IP/Forward Port : 转发到的目标服务地址,
注意:我们部署的代理服务 要能访问到我们转发的目标服务
- Custom locations
如果我们的服务要根据locations 转发的话在此出配置
SSL
ssl配置
Advanced
如果前边这些不能满足我们的需求的话可在此处添加自定义配置
- 禁止启用代理
我们某个代理如果想禁止或启用代理的话可以直接通过如下操作方便实现。
_20240323213804.jpg
我们在这儿通过页面配置好之后服务最终会生成一个nginx配置的conf文件,以此来使的我们的配置生效,配置生成的路径为./data/nginx/proxy_host/*.conf
,我们生成的配置如下:
其它配置选项家人们可自行尝试,我们就不再此处演示了。
总结
Nginx Proxy Manager是一款强大的代理服务器管理工具,提供简单直观的界面来配置和管理Nginx代理服务器,帮助用户轻松提升配置的简洁性和便捷性。如果需要复杂的个性化配置,建议在服务器上通过配置文件进行设置。该项目主要将用户通过可视化界面进行的配置选项最终转化为配置文件提供给nginx使用。