1.简介
正常情况下 Nginx 的管理和日常操作都是通过 Shell 的方式进行,要求操作人员熟悉操作系统环境和 Nginx 配置文件中的各种设置参数。在 Nginx 的配置文件多(大于100个)且变化频繁的情况下更是考验操作人员的能力和经验。
随着微服务和 Devops 的技术趋势,简化 web 代理操作并确保设置即时生效的需求越来越多。后续甚至需要考虑集成到产品本身的服务中。目前通过 web 方式管理 Nginx 代理服务器的除商业方案外(如 Openresty 商业版 Edge)开源的方案有基于 kong 微服务的 konga 方案和本文提到的 Nginxproxymanager。
1.1.Konga
基于 kong 微服务网关的图行管理界面。详细的安装及配置可以参考:
kong 微服务网关插件机制及常用指令 https://blog.51cto.com/waringid/5800540
kong 微服务网关配置指南 https://blog.51cto.com/waringid/5793828
使用Kong和Konga管理微服务和API https://blog.51cto.com/waringid/5790671
nginx配置指南之一 https://blog.51cto.com/waringid/1438852
nginx操作指南之二 https://blog.51cto.com/waringid/1441632
nginx增加modsecurity模块 https://blog.51cto.com/waringid/1629905
也谈nginx的安全限制 https://blog.51cto.com/waringid/1608666
利用Kong 的 request-transformer 插件重写 URL https://blog.51cto.com/waringid/5803062
Linux 系统生产环境配置指南 https://blog.51cto.com/waringid/5782872
序号
功能
说明
1
代理组件
2
数据库
PGSQL
Kong 不支持 MySQL
3
图形管理
konga
4
图形组件
node
5
优势
6
缺点
1.2.nginxproxymanager
和 konga 相比配置和操作都比较简单,对于要求不高的应用场景(例如内网环境)可以用来替换 konga
https://nginxproxymanager.com/
序号
功能
说明
1
代理组件
2
数据库
MySQL
3
图形管理
nginxproxymanager
4
优势
5
缺点
2.安装 nginxproxymanager
2.1.环境配置
1、参照“Linux 生产环境配置指南”中的“容器组件更新”部分的内容完成容器组件的配置
2、安装 docker compose 工具https://docs.docker.com/compose/install/
yum install python-pip python-devel libffi-devel openssl-devel gcc libc-* makesudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" \-o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose -v2.2.增加加容器文件
version: '3'services: app: image: 'jc21/nginx-proxy-manager:latest' ports: - '80:80' - '81:81' - '443:443' - '8000:8000' environment: TZ: "Asia/Shanghai" DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt db: image: 'jc21/mariadb-aria:10.4' environment: TZ: "Asia/Shanghai" MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql1、增加的 8000 端口配置用于测试验证 Nginx 的 TCP 端口转发,例如将 8000 转发到内网的 SSH 端口
2、TZ:“Asia/Shanghai” 用于配置时区,容器默认的时区为 +0 时区,Nginx 日志的时间记录和北京时间相差8小时
2.3.启动容器
docker-compose up -d3.访问及配置
3.1.登陆
容器启动后通过 web 打开容器所在的主机地址的81端口访问。默认的用户名和密码是:admin@example.com/changeme
3.2.反向代理主机
代理主机中的 Access list 访问策略默认只有公共策略,只有建立了自定义策略后才会显示。主要用于控制页面的访问权限(例如增加用户名密码或是 IP 地址限制等策略)