使用Nginx Proxy Manager反向代理docker应用以及java项目

作者:gaoqiang 时间:23-03-12 阅读数:325人阅读

简介

微信截图_20230212173256.png

Nginx Proxy Manager 就是一个 Nginx 的代理管理器,它最大的特点是简单方便。

即使是没有 Nginx 基础的小伙伴,也能轻松地用它来完成反向代理的操作,而且因为自带面板,操作极其简单,非常适合配合 docker 搭建的应用使用。Nginx Proxy Manager 后台还可以一键申请 SSL 证书,并且会自动续期,方便省心。

下面我们就来介绍如何使用 Nginx Proxy Manger 来代理docker应用以及java项目,实现反向代理和 HTTPS 访问。

安装 Nginx Proxy Manager

说明:默认你的服务器已经安装了 Docker 和 Docker Compose,如果你没有安装,可以参考:docker安装详细教程 的环境搭建部分来进行安装

Nginx Proxy Manager(以下简称 NPM) 官网:https://nginxproxymanager.com/

mkdir -p ~/docker_data/nginxproxymanager   # 创建一个 npm 的文件夹

cd ~/docker_data/nginxproxymanager    # 进入该文件夹

vi docker-compose.yml

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

推荐在本地创建好文件后上传到以上创建的目录下

version: '3'
services:
  app:
    image: 'chishin/nginx-proxy-manager-zh:latest'
    restart: always
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

以上镜像为中文翻译版,与原版同步更新,如喜欢 原版的,可将image 改为 jc21/nginx-proxy-manager:latest

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

启动 NPM:

docker-compose up -d     # -d 表示后台运行

docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

不出意外,此时你使用 http://127.0.0.1:81 就可以访问 NPM 的网页端了。(注意把 127.0.0.1 替换成你实际服务器的 IP)

如果不能访问,请先检查防火墙端口是否开放

不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。

遇到访问不了的情况,请再次检查在宝塔面板的防火墙和服务商的后台防火墙是否打开对应了端口。

默认管理员用户:

Email:    admin@example.com
Password: changeme

首次登陆进去会提示设置用户名,邮箱,密码等信息,尽量设置复杂一点。

Nginx-Proxy-Manager-1-ab1ff5beca03af013ce4236cab4244ee.pngNginx-Proxy-Manager-2-6078349af82791cc452c58322c72bd34.png

以上设置完成后,我们将进入首页页面

微信截图_20230212171838.png

配置代理

选择代理服务,添加代理

微信截图_20230212172210.png

  • 域名: 解析到服务器的域名

  • 协议:默认选择HTTP ,除非你有自签名证书

  • 转发主机:填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 Halo 搭建在同一台服务器上的话)

  • 转发端口:需要代理应用端口,根据自己实际情况填写

  • 缓存资源阻止常见漏洞支持websockets 建议开启,根据自己实际情况填写

SSL设置

微信截图_20230212172755.png

选择申请一个新的SSL证书,证书有效期3个月,到期自动续期

微信截图_20230212172930.png

如上配置,点击保存,保存后需再次编辑,在SSL设置处,开启强制SSL,保存即可

至此,不出意外的话,你代理的应用已经可以正常访问了!

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

本文链接:https://www.518wz.top/post/23.html 转载需授权!

分享到:

发表评论