首页 > 系统相关 >运维 | Nginx Proxy Manager反向代理工具

运维 | Nginx Proxy Manager反向代理工具

时间:2023-09-30 13:07:12浏览次数:37  
标签:NPM 运维 IP Nginx Manager https 服务器 docker com

运维 | Nginx Proxy Manager反向代理工具

简介

Nginx Proxy Manager(以下简称 NPM)就是一个 Nginx 的代理管理器,它最大的特点是简单方便。

即使是没有 Nginx 基础的小伙伴,也能轻松地用它来完成反向代理的操作,不需要自己写复杂的nginx配置,而且因为自带面板,操作极其简单。

Nginx Proxy Manager 后台还可以一键申请 SSL 证书,并且会自动续期,方便省心。

官方网站:https://nginxproxymanager.com/ 官方快速安装:https://nginxproxymanager.com/guide/#quick-setup

准备工作

  • 服务器

    Vultr 注册:https://www.vultr.com/ Racknerd 注册:https://my.racknerd.com/

  • 域名注册与解析

    域名注册:https://www.namesilo.com 域名解析:https://www.cloudflare.com

  • SSH 连接工具(可选,推荐)

    FinalShell下载:http://www.hostbuf.com/t/988.html

快速使用

环境搭建

我们推荐按照 Docker 官方文档安装 Docker 和 Docker Compose,因为部分 Linux 发行版软件仓库中的 Docker 版本可能过旧。

创建容器

  1. 在系统任意位置创建一个文件夹,此文档以 /opt/docker/npm 为例
mkdir -p /opt/docker/npm && cd /opt/docker/npm
mkdir -p ./{conf,data,logs}

注意:后续操作中,产生的所有数据都会保存在这个目录,请妥善保存

  1. 创建 docker-compose.yaml
vim docker-compose.yml

在英文状态的输入法下,按下 i,左下角出现 --INSERT-- 后,粘贴填入下面的内容:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建
    # network_mode: "host"

注意:安装了 NPM 之后,就不需要再安装 Nginx 了,否则会端口冲突(不建议修改 NPM 的 80、443 端口)。如果你的服务器安装了宝塔面板,也可以和 NPM 一起使用,只要你到软件后台把宝塔安装的 Nginx 关闭或者卸载即可。

之后,同样在英文输入法下,按一下 esc,然后 :wq 保存退出。

  1. 启动服务
docker-compose up -d

实时查看日志:

docker-compose logs -f
  1. 用浏览器访问 http://ip:端口号 即可

默认登陆的用户名:[email protected] 密码:changeme

第一次登陆会提示更改用户名和密码,建议修改一个复杂一点的密码。

查看服务器 IP:curl ip.sb

如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip:端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。

更新容器

  1. 停止运行中的容器组
cd /opt/docker/npm && docker-compose down
  1. 备份数据(重要)
cp -r /opt/docker/npm /opt/docker/npm.archive

需要注意的是,npm.archive 文件名不一定要根据此文档命名,这里仅仅是个示例。

  1. 更新服务

修改 docker-compose.yaml 中配置的镜像版本

拉取镜像

docker-compose pull npm

重新启动容器

docker-compose up -d

进阶使用

配置反向代理

首先我们登陆网页端之后,会弹出修改用户名和密码的对话框,我们根据自己的实际来修改自己的用户名和邮箱。

保存之后,会让我们修改密码(建议用一个复杂的密码)。

接着我们就可以添加一个反向代理了。

点击 Proxy Hosts

接着点击 Add Proxy Host,弹出如下对话框:

看起来都是英文,很复杂,但是其实很简单,我们只要用到其中的几个功能即可,这边稍微解释一下:

  • Domain Names :填我们网站的域名,首先记得做好 DNS 解析,把域名绑定到我们的服务器的 IP 上
  • Scheme :默认 http 即可,除非你有自签名证书
  • Forward Hostname/IP :填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 网站搭建在同一台服务器上的话)
  • Forward Port:填入网站映射出的端口,这边默认是 8090
  • Cache Assets :缓存,可以选择打开
  • Block Common Exploits: 阻止常见的漏洞,可以选择打开
  • Websockets Support :WS 支持,可以选择打开
  • Access List: 这个是 NPM 自带的一个限制访问功能,这边我们不管,后续可以自行研究。

以下是一个样列:

因为样例的 NPM 和 网站搭建在同一台服务器 上,所以这边的 IP,图中填的是 172.17.0.1,为 Docker 容器内部的 IP 地址,

可以通过下面的命令查询:

ip addr show docker0
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:e4:a3:b5:b9 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

这边的 IP 是 172.17.0.1,填入这个 IP,可以不用打开防火墙的 8090 端口。

当然,如果你的 NPM 和网站不在同一台服务上,你需要在 IP 部分填入 你的 网站所在的服务器的 IP,并在服务商(部分服务商如腾讯、阿里)的后台打开 8090 端口。

申请 SSL 证书

接着我们来申请一张 SSL 证书,让我们的网站支持 https 访问。

如图所示,记得打开强制 SSL,其他四个的功能请自行研究,这边不多做讨论。

  1. 申请证书需要你提前将域名解析到 NPM 所在的服务器的 IP 上;
  2. 如果你使用的是国内的服务器,默认 80443 端口是关闭的,你需要备案之后才能使用;
  3. 如果你使用了 CloudFlare 的 DNS 服务,记得把小黄云关闭(即不开启 CDN)。

不出意外,你将成功申请到 SSL 证书,证书会三个月自动续期。

再次点开配置,查看一下,将强制 SSL 打开。

至此,你已经成功完成了网站的反向代理,快尝试使用域名访问一下看看吧!

同样的,举一反三,试试把你的 NPM 也用一个域名来反向代理一下吧。(小提示:你需要再解析一个域名(可以是二级域名)到 NPM 所在的服务器上,反代页面需要填的 IP 可以填 docker 容器内的 IP 也可以填服务器的 IP,端口填 81 即可)

FAQ

Internal Error while applying let'sencrypte certificate

https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2860

Temp workaround (that works for me!) for SSL certificate renewal bug

https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2881

ModuleNotFoundError: No module named 'zope'

https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2440

AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator'

https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430

Internal Error while applying let'sencrypte certificate

https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2860

如何安装中文版

当你使用官方示例的docker-compose时需要注意,将image镜像jc21/nginx-proxy-manager替换为chishin/nginx-proxy-manager-zh即可实现中文部署

中文镜像并没有重新构建后端代码,由Dockerfile-zh源码可以得知,中文版镜像基于官方镜像替换前端代码来实现的,所以中文版本的全部功能与官方版本完全相同,只是显示界面的文字不同的区别。

端口无法访问怎么办

sudo systemctl stop firewalld

处理遇到502的问题

setsebool -P httpd_can_network_connect 1

参考文献

标签:NPM,运维,IP,Nginx,Manager,https,服务器,docker,com
From: https://blog.51cto.com/appleex/7655675

相关文章

  • 点播模块编译nginx
    VOD模块NGINX编译部署主要解决我那破电视的观影需求、软件装不了又不想掏钱看线上广告;U盘也没法播、没几个兼容的解码软件,五六年前的电视买的是真坑爹,我又不会刷机,那索性用废笔记本装linux整个nginx-vod模块整个音视频链接,电视上用短小精悍的VLC观影。下包mkdir/usr/local/n......
  • 基于AIOps实现智慧园区极简IT运维
    随着物联网、云平台、大数据、人工智能等技术的发展,并逐步投入到智慧园区的建设,传统园区数字化转型加快。园区的形式包括产业园区、教育园区、制造业园区、科研园区、社区等等,园区形态不断演进和发展,园区网承载的对象和业务也越来越多。业务种类爆炸性增长,业务变更愈加频繁,网络运......
  • Java内存分析工具实践之resourcemanager内存泄漏排查
    ......
  • 源码编译nginx安装脚本
    #!/bin/bashprofile(){echo"installingrelyon...."yum-yinstallgccgcc-c++pcrewgetopensslopenssl-devellibtoolgdgd-develecho"dowloadnginx_1.18......"cd/usr/local/src&&wgethttps://nginx.org/download/nginx-1.......
  • nginx.conf被删除后如何通过内存导出nginx.conf文件
    问题上午同事反馈,nginx下conf/nginx.conf文件是空的.解决m1:通过nginx内存转储出来nginx.conf01、查看nginxmaster进程02、查看内存映射是否存在heap类型cat/proc/x/maps|grepheap(空空如也)03、如果存在heap类型则gdb转储堆文件yuminstall-ygdbgdb--pidxd......
  • Nginx与Tomcat、Client之间请求的长连接配置不一致问题分析解决
    nginx1.Nginx-反向代理nginx.conf:http{...###与Client连接的长连接配置###http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests#设置通过"一个存活长连接"送达的最大请求数(默认是100,建议根据客户端在"keepa......
  • 负载均衡 nginx+ keepalived +vip
    一、负载均衡nginx+keepalived+vip1、在所有节点,安装nginxcd/data/workwgethttp://nginx.org/download/nginx-1.18.0.tar.gz#编译yuminstallgccgcc-c++pcrepcre-develzlibzlib-developensslopenssl-devel-ytar-xzvfnginx-1.18.0.tar.gzcdnginx-1.18.0./c......
  • k8s部署nginx+php+mysql
    mysql部署参考我之前文档一.hostPath创建项目1.编辑dockerfilevidockerfileiFROMdocker.io/openshift/base-centos7:latest#MAINTAINERfeiyu"[email protected]"RUNyummakecacheRUNyum-yinstallphp-fpmphpphp-gdphp-mysqlphp-mbstringphp-xmlphp-mcryptphp-im......
  • 负载均衡 nginx+ keepalived +vip
    一、负载均衡nginx+keepalived+vip1、在所有节点,安装nginxcd/data/workwgethttp://nginx.org/download/nginx-1.18.0.tar.gz#编译yuminstallgccgcc-c++pcrepcre-develzlibzlib-developensslopenssl-devel-ytar-xzvfnginx-1.18.0.tar.gzcdnginx-1.18.0./co......
  • helm安装 ingress-nginx
    目录1.下载ingress-nginx-4.2.5.tgz2.解压,修改文件3.安装ingress4.测试网页5.windows测试helm3安装1.下载ingress-nginx-4.2.5.tgzhelmfetchingress-nginx/ingress-nginx--version4.2.5#或者curl-LOhttps://github.com/kubernetes/ingress-nginx/releases/download/helm-c......