##

v0.0.18

# 运行在反向代理

因为 ABT 节点可能会包含多个 Blocklet, 而几乎每个 Blocklet 都需要至少一个端口（静态 Blocklet 不需要）， 所以 ABT 节点和 Blocklet 会需要多个端口，所以生产环境下往往需要和反向代理服务器一起部署。 该文档将以 Nginx 为例介绍如何和反向代理服务器一起部署 ABT 节点, 同时给 ABT Node Daemon 和 一个 Blocklet 分别绑定了一个域名。

确保安装了最新版的 ABT 节点

##
准备条件

- 运行在 8089 端口的 ABT Node Daemon 服务
- 运行在 8090 端口的 Blocklet Manager Blocklet
- 代理服务器: Nginx

- 两个域名

  - ABT Node: abtnode.com
  - Blocklet Manager Blocklet: blocklet.abtnode.com

##
Nginx 配置

例子：

    server {
        listen 80;
        server_name abtnode.com;

        location / {
            proxy_pass http://127.0.0.1:8089;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    server {
        listen 80;
        server_name blocklet.abtnode.com;

        location / {
            proxy_pass http://127.0.0.1:8090;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

该配置将域名 `abtnode.com` 并定在 8089 端口, 域名 `blocklet.abtnode.com` 版绑定在 8090 端口。 同时需要注意，需要将 Host 头部通过代理服务器传递给上游的服务。

##
更新 ABT 节点配置

配置好代理后，需要修改 ABT 节点的配置文件, 将 ABT 节点的域名更新到配置文件中:

    node:
      name: 'ABT Node [polunzh]'
      description: Container of useful blocklets from ArcBlock and its Developer Community
      sk: >-
        0x4000d4f04d39c700003838f04e0eb7c4006a841a2f12ed762b577b2c8ab07acbe63acb6d74f30db68cbec0977d1398ee40af85d62647624969fb7eae832348f9
      pk: '0xe63acb6d74f30db68cb0c0907d1398ee40af85d62647624969fb7eae832348f9'
      did: zNKmYKcs84YViFyocUJKMJ5HRw001oH1K2y2
      dataDir: /home/demo/.abtnode
      domain: 'abtnode.com'
      ip: 192.168.0.1
      port: 8089
      https: true
      secret: '0xa5cd176753101e5f12e604b6a741fed382c19ecfe45cd9d32a5d231404b41f23'
      owner:
        pk: ''
        did: ''
    blocklet:
      port: 8089
      registry: 'https://blocklet.arcblock.io'
      owner:
        pk: ''
        did: ''

如果启用了 HTTPS, 需要将配置文件中的 `https` 属性设置为 `true`. 如上面的配置文件。

修改好后配置文件，需要重启 ABT 节点节点并更新配置，可以通过 ABT 节点 CLI 命令重启:

    abtnode start -u

重启服务后就可以使用域名正常访问节点了。

##
配置 Blocklet 的域名

在 Blocklets -> 详情 -> 配置 页面可以配置该 Blocklet 的域名，填写域名后点击保存，然后重启 Blocklet

重启 Blocklet 才会使修改的域名生效

##
其它

可以在 Blocklets -> 详情 -> 环境变量 页面找到 Blocklet 运行时所有的环境变量, 比如端口、当前的域名、IP 等等.

##
注意事项

- 当前只能通过手动修改节点的配置文件来修改节点的 IP, 域名
- 如果启用了 HTTPS, 那么需要将 ABT Node Daemon 和所有的 Blocklet 都启用 HTTPS

#### Table Of Contents

Edit on GitHub
Community Discuss