安全不是一种产品,而是一种过程。
引言
最近我在玩飞牛NAS系统,装了很多服务,发现直接用 NGINX 来配置反向代理有时候不够直观。在网络开发中,反向代理是一个非常重要的概念,它不仅能提高安全性,还能帮助我们更好地管理流量。NGINX 作为广泛使用的工具,几乎每个网络项目都会用到。为了简化配置和管理过程,NGINX Proxy Manager 应运而生,它提供了一个更直观的界面来管理 NGINX 反向代理。今天,我想跟大家分享一下这个工具的基本功能以及如何安装它,希望能对大家有所帮助。
什么是 NGINX Proxy Manager?
NGINX Proxy Manager 是一个基于 Docker 的反向代理管理工具,提供了一个简单易用的界面,让我们可以轻松配置和管理 NGINX 反向代理。它支持 SSL 证书管理、访问控制等多种功能,真的是个好帮手。
主要功能
简单的用户界面:通过图形界面轻松管理反向代理设置,完全不需要复杂的命令行操作。
SSL 证书管理:支持 Let's Encrypt 自动获取和续期 SSL 证书,省心又省力。
访问控制:可以设置基本的身份验证和 IP 白名单,保护我们的服务。
多域名支持:可以为多个域名配置反向代理,适合各种需求。
docker-compose安装
先决条件
一台运行 Debian 或 Ubuntu 的服务器。
已安装 Docker 和 Docker Compose。
安装步骤
创建数据库(我喜欢mysql~)
CREATE DATABASE npm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'npm'@'%' IDENTIFIED BY 'password'; GRANT ALL ON `npm`.* TO 'npm'@'%'; FLUSH PRIVILEGES; GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, UPDATE ON `npm`.* TO 'npm'@'%'; FLUSH PRIVILEGES;
创建 docker-compose.yml 文件:
services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped container_name: nginx-proxy-manager 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: "ip" DB_MYSQL_PORT: 33306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "password" DB_MYSQL_NAME: "npm" # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
启动 NGINX Proxy Manager:
docker-compose up -d
访问管理界面:
打开浏览器,访问 http://你的服务器IP:81,使用默认的登录信息:Email: admin@example.com
Password: changeme
添加ssl
上来先配置SSL再说,配置 SSL 就像为你的数据加上一道安全锁,让它在网络上安心流通,避免不必要的风险。饭可以不吃,SSL不能没有。
可以自定义上传已经申请好的证书,或者用let's Encrypt 配置自动申请。
let's Encrypt
废话不说,直接配置。
说明:
Domain Names,申请证书的域名,支持* 通配符
我这边推荐使用dns解析,我是腾讯云的深度用户,认证信息的id和key要在这个上面获取https://console.dnspod.cn/account/token/token,请妥善保管。
填完之后点确定,正常情况下SSL Certificates列表页面就可以看到刚才的ssl证书了。
配置反向代理
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id_or_name>
因为是容器部署,Forward Hostname / IP这里填的是容器的网关ip,我这里是172.17.0.1。
其他的选项都可以直接勾选上。
location
ssl,enabled就行。
结论
总的来说,NGINX Proxy Manager 是一个非常强大的工具,可以让我们轻松管理反向代理。无论你是新手还是有经验的开发者,都能从中受益。使用 NGINX Proxy Manager,我们可以更方便地管理自己的 web 应用和服务。
题外话
简单试了一下,确实很方便,可视化界面点点点倒也不错。
不过还可以尝试另外一个反向代理神器,lucky。这个我们下次再说。
感谢大家的阅读和支持!如果有任何疑问或建议,欢迎留言交流。希望这篇文章能帮助大家更好地理解和使用NGINX Proxy Manager,祝大家使用愉快!