使用Docker 部署强大的反向代理服务器Nginx Proxy Manager

简单介绍一下Nginx Proxy Manager

Nginx Proxy Manager(NPM)是一个基于Nginx的开源反向代理和负载均衡器管理工具,它允许用户轻松地管理和部署多个Nginx实例。这个工具通过提供一个简洁的Web界面,使得管理Nginx配置变得更为方便。用户可以在没有深入了解Nginx配置的情况下轻松地创建和修改代理、负载均衡和SSL证书配置。

主要功能

NPM的主要功能包括:

  1. 反向代理管理:创建和管理反向代理配置,轻松配置代理到后端服务器。
  2. 负载均衡器:通过简单的Web界面设置和管理负载均衡器,实现请求分发到多个后端服务器。
  3. SSL证书管理:支持Let’s Encrypt免费SSL证书自动申请和续期,同时也支持自定义证书。
  4. 访问控制:通过访问控制列表(ACL)限制访问特定IP地址或CIDR范围。
  5. 自定义Nginx配置:可以轻松地添加和修改自定义Nginx配置。

1.安装Docker ,Docker Compose

可以参考我的这篇文章安装docker docker-compase

2.部署Nginx Proxy Manager

安装非常的简单,新建一个docker-compose.yml配置文件,填入以下内容:

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    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: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./mysql:/var/lib/mysql

警告

请注意,环境变量将优先于变量。因此,如果您保留了MySQL变量,您将无法使用SQLite。DB_MYSQL_*DB_SQLITE_*

请根据需要自行修改数据库密码,根据注释添加一些个性化功能。修改后可能出现可以访问但无法登陆后台的情况,我试了很多次都没有成功,可能是我的配置问题。不修改的情况下没有出现任何bug。

接下来,运行docker-compose up -d命令启动Nginx Proxy Manager容器。

使用方法

启动容器后,访问http://<your-server-ip>:81进入Nginx Proxy Manager管理界面。默认的用户名和密码分别为[email protected]changeme,登录后请立即修改密码。

Domain Names-设置用户访问的域名,例如:health.zyh8.com (不需要带http或 https)

如果没有域名可以点击此处注册,价格非常便宜,.TOP域名二三十块钱一年

namesilo域名注册优惠码:ZYH8

填写后可以优惠一美元

下面设置需要代理的源服务器,假设我有一台nas,服务器地址是:192.168.1.88,协议是http ,端口就是默认的80,那就应该这样填写:(服务器地址也可以是域名)

Cache Assets-设置是否需要缓存你源服务器的内容

Block Common Exploits-阻止常见的网络攻击

Websockets Support-是否启用Websockets回源(如果你不知道这是什么,下文有介绍)

如果你需要https连接你可以去配置一个证书,推荐几个提供免费证书的网站(建议申请泛域名证书):

FreeSSL.cn一个提供免费HTTPS证书申请的网站

Free SSL Certificates Provider and ACME Tools

Let’s Encrypt

申请成功后导入到Nginx Proxy Manager,选择你需要的证书即可,根域名和子域可以共用一个泛域名证书

WebSocket 简介

WebSocket 是一种网络通信协议,提供了在单个TCP连接上进行全双工、双向通信的能力。WebSocket 协议在2008年首次提出,最终在2011年成为IETF(互联网工程任务组)的标准(RFC 6455)。WebSocket 设计的初衷是为了在Web浏览器和Web服务器之间实现低延迟、实时双向通信。

传统的HTTP协议是基于请求-响应模型的,客户端需要发起请求,服务器才能响应。而 WebSocket 协议则允许服务器主动向客户端发送消息,同时客户端也可以向服务器发送消息。这使得WebSocket协议非常适合实时应用,例如在线聊天、实时数据推送、在线游戏等。

工作原理

WebSocket 协议利用 HTTP/HTTPS 协议发起握手请求,之后在同一个TCP连接上进行全双工通信。握手过程如下:

  1. 客户端向服务器发送HTTP请求,包含 Upgrade: websocketConnection: Upgrade 头部,表示希望建立 WebSocket 连接。
  2. 服务器收到请求后,如果同意建立 WebSocket 连接,会返回一个包含 101 Switching Protocols 状态码的HTTP响应,同时包含 Upgrade: websocketConnection: Upgrade 头部。

握手成功后,客户端和服务器就可以在同一个TCP连接上进行全双工通信。WebSocket 数据帧包含一个小的报头和负载数据,可以高效地传输小数据量。

WebSocket 与 HTTP 的比较

WebSocket 和 HTTP 之间有一些关键的区别:

  • 双向通信:WebSocket 支持全双工、双向通信,而 HTTP 是基于请求-响应模型的。
  • 低延迟:WebSocket 在建立连接后,数据传输不需要重复进行握手,这降低了通信延迟。而 HTTP 每次请求都需要创建新的连接或重用现有连接,可能导致更高的延迟。
  • 持久连接:WebSocket 使用持久性连接进行通信,避免了频繁建立和关闭连接的开销。而 HTTP 在请求-响应过程结束后,连接可能会关闭(取决于是否使用 HTTP Keep-Alive)。

使用场景

WebSocket 协议适用于需要实时交互或低延迟通信的场景,例如:

  • 在线聊天应用
  • 实时数据推送(如股票行情、体育比赛实时得分)
  • 在线游戏
  • 协同编辑和实时更新的Web应用

总之,WebSocket 是一种强大的网络通信协议,它为Web应用带来了实时交互和低延迟通信的能力。

智云海Telegram频道
技术支持:[email protected]
站长E-mail:[email protected]
如需转载,请注明文章出处

评论

  1. 博主
    Windows Edge
    10月前
    2023-7-13 14:00:53

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇