{"componentChunkName":"component---node-modules-arcblock-gatsby-theme-docs-src-templates-documentation-js","path":"/en/deployment/behind-reverse-proxy","result":{"data":{"file":{"changeTime":"5 minutes ago","childMarkdownRemark":{"frontmatter":{"author":"zhenqiang, tigeryu8900","category":"","date":null,"description":"Bind domain with reverse proxy server","draft":null,"keywords":"abtnode, deployment, proxy","language":"en","layout":"documentation","path":"/en/deployment/behind-reverse-proxy","tags":["forge"],"title":"Bind domain with reverse proxy server"},"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Because ABT Node may contain multiple Blocklets, and almost every Blocklet uses at least one port (not required for\nstatic Blocklets), ABT Node and Blocklet will use multiple ports, so in production environments, a reverse proxy may be\nneeded. This document will use Nginx as an example reverse proxy to explain how to deploy ABT\nNode with a reverse proxy server and bind a domain name to ABT Node Daemon and a blocklet, respectively."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"alert","properties":{"type":"warning"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Make sure the latest version of ABT Node is installed"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"preparation-requirements","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#preparation-requirements","ariaLabel":"preparation requirements permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Preparation Requirements"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"BT Node daemon service running on port 8089"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Blocklet Manager blocklet running on port 8090"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Proxy server: Nginx"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Two domain names:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ABT Node: abtnode.com"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Blocklet Manager blocklet: blocklet.abtnode.com"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"nginx-configuration","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#nginx-configuration","ariaLabel":"nginx configuration permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Nginx Configuration"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nginx configuration:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"server {\n    listen 80;\n    server_name abtnode.com;\n\n    location / {\n        proxy_pass http://127.0.0.1:8089;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n}\nserver {\n    listen 80;\n    server_name blocklet.abtnode.com;\n\n    location / {\n        proxy_pass http://127.0.0.1:8090;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n}\n"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This configuration binds the domain name "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"abtnode.com"}]},{"type":"text","value":" to port 8089 and binds the domain name "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"blocklet.abtnode.com"}]},{"type":"text","value":" to\nport 8090. Make sure that Host header is passed to the upstream service through the proxy server."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"update-abt-node-configuration","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#update-abt-node-configuration","ariaLabel":"update abt node configuration permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Update ABT Node Configuration"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"After configuring the proxy, you need to modify the configuration file of ABT Node and update the domain name of ABT\nNode to the configuration file:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-yaml"],"name:":"","'ABT":"","Node":"","[polunzh]'":""},"children":[{"type":"text","value":"node:\n  name: 'ABT Node [polunzh]'\n  description: Container of useful blocklets from ArcBlock and its Developer Community\n  sk: >-\n    0x4000d4f04d39c700003838f04e0eb7c4006a841a2f12ed762b577b2c8ab07acbe63acb6d74f30db68cbec0977d1398ee40af85d62647624969fb7eae832348f9\n  pk: '0xe63acb6d74f30db68cb0c0907d1398ee40af85d62647624969fb7eae832348f9'\n  did: zNKmYKcs84YViFyocUJKMJ5HRw001oH1K2y2\n  dataDir: /home/demo/.abtnode\n  domain: 'abtnode.com'\n  ip: 192.168.0.1\n  port: 8089\n  https: true\n  secret: '0xa5cd176753101e5f12e604b6a741fed382c19ecfe45cd9d32a5d231404b41f23'\n  owner:\n    pk: ''\n    did: ''\nblocklet:\n  port: 8089\n  registry: 'https://blocklet.arcblock.io'\n  owner:\n    pk: ''\n    did: ''\n"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"alert","properties":{"type":"success"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If HTTPS is enabled, you need to set the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" property in the configuration file to "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"true"}]},{"type":"text","value":", as in the configuration\nfile above."}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"After modifying the configuration file, you need to restart the ABT Node and update the configuration. You can restart\nit through the ABT Node CLI command:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"abtnode start -u\n"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"After restarting the service, you can use the domain name to access the node."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"configure-the-domain-name-of-the-blocklet","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#configure-the-domain-name-of-the-blocklet","ariaLabel":"configure the domain name of the blocklet permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Configure the domain name of the blocklet"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On the "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Blocklets -> Detail -> Setting"}]},{"type":"text","value":" page, you can configure the domain name of the Blocklet, fill in the domain\nname and click Save, then "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Restart Blocklet"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1000px; "},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 48%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABMklEQVQoz32Sy07DUAxE8/9fwoayYtN+BQJRUAGhLiDNs8l92EkqBvumidoQsjiyNL6ejK1Ex6pCVdc4CpVzMIInAjcNiPkK1aea4rwXD4PvOEakj7quQynGhyIPxrUxsM6LAc+aan/ASgDnCU3LSNIUUSVi07Y4pAk+93vkRRkaSZrJgCS2FlYSaNUkWZ6HflGW8rYI26muG+lMVHsHkiQqMGvDo2kowKzr26CroZJmWaiXJxlOFAy1qXHz0uNhW+Px1WD7TmcYLx+Mpx0hThlty6ORmlwyGuoN2o7xlRBWG8btmgJ3m76u1h439x7Pb4TTicK9ehOeT2idDSLLivhxPfACCzTSdWI2SaVhhtteJRy+YlyPVTz39YyjIQ0vrzwIc7/HEtO3fwznBv4bXkr4CylwAN5zlm38AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"alt":"blocklet domain setting","title":"blocklet domain setting","src":"/abtnode/static/467ae7b45dbc33216c15cfbe351f9e8c/ea415/blocklet-domain-setting.png","srcSet":["/abtnode/static/467ae7b45dbc33216c15cfbe351f9e8c/41b2e/blocklet-domain-setting.png 250w","/abtnode/static/467ae7b45dbc33216c15cfbe351f9e8c/36a81/blocklet-domain-setting.png 500w","/abtnode/static/467ae7b45dbc33216c15cfbe351f9e8c/ea415/blocklet-domain-setting.png 1000w","/abtnode/static/467ae7b45dbc33216c15cfbe351f9e8c/5dce9/blocklet-domain-setting.png 1500w","/abtnode/static/467ae7b45dbc33216c15cfbe351f9e8c/edb3f/blocklet-domain-setting.png 1722w"],"sizes":["(max-width:","1000px)","100vw,","1000px"],"style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;","loading":"lazy"},"children":[]},{"type":"text","value":"\n    "}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"alert","properties":{"type":"warning"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Restarting the blocklet will make the modified domain name take effect"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"others","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#others","ariaLabel":"others permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Others"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"You can find all the environment variables when the blocklet is running, such as the port, current domain name, IP,\netc., on the "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Blocklets -> Detail -> Environment"}]},{"type":"text","value":" page."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1000px; "},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 109.2%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVQ4y4WU2ZKCQAxF/f9vnJoqsBwWBZEdfejJaYn0AjMPqWgnuZ3cG/o0zbMZp8na8nya5fUynM3LYm2ap09cjbjaO2f7f1JAfNN1pm5b0/a96eR3P44Sm70Cze/IEWslDz/Y3GkDpLvkfDZf39+mut9NURSmKG+S/O6KAi3sh8Fcbzdzqyrra8kH2APEaJ8ABdgwiheQh3SNpXJhVdefeNi1B4gHjIJ706xJ/qhM4XLm8hqNjOeQAgrdAn4zbi2XkRPG8EwQAdoi4QNzC9W/aRgPFY9UVtUodJNVVR15Wyn/Qr9DSVDi4ZACN7m8Xk0lqsIxVq/ihFxGouSyLowc8gRAUZamXK15PKJxo5Hp8HK52P0KAdm3LM/thXgVSFdIaTqFSnI7wCHgT5aZJEmsnYUWLrUCOhRwQdQhySQqhxrLpStAdU9dcVyRIpUhf1vsDRDOLLfrFxU+GLuiAEghgHsL/Ncro7keIMTCzd466Bbo4jM6DYQ5UYeshgsYcozK0MLFlQojFgEyAuOmaWqBQ0DiKJmJMG783w5RU5c2TKZDfUBCXg9FYWndxfZe9FXp8PzwSzl6UfbevaPzXUAF3RtbH173DSVfFf8FoTijswAWj18AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"alt":"blocklet domain setting","title":"blocklet domain setting","src":"/abtnode/static/eafe10f67f7484aa7a779bbadab7dfd9/ea415/blocklet-environments.png","srcSet":["/abtnode/static/eafe10f67f7484aa7a779bbadab7dfd9/41b2e/blocklet-environments.png 250w","/abtnode/static/eafe10f67f7484aa7a779bbadab7dfd9/36a81/blocklet-environments.png 500w","/abtnode/static/eafe10f67f7484aa7a779bbadab7dfd9/ea415/blocklet-environments.png 1000w","/abtnode/static/eafe10f67f7484aa7a779bbadab7dfd9/5dce9/blocklet-environments.png 1500w","/abtnode/static/eafe10f67f7484aa7a779bbadab7dfd9/869ae/blocklet-environments.png 1585w"],"sizes":["(max-width:","1000px)","100vw,","1000px"],"style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;","loading":"lazy"},"children":[]},{"type":"text","value":"\n    "}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"important","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#important","ariaLabel":"important permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Important"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Currently, you can only modify the node's IP and domain name by manually modifying the node's configuration file."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"HTTPS needs to be enabled for ABT Node Daemon and all blocklets for HTTPS to work."}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}}}}},"pageContext":{"site":{"title":"ABT Node","description":"ABT Node Documentation","siteUrl":"https://docs.arcblock.io","logoUrl":"/abtnode/","sidebarWidth":360,"disableI18n":false,"showGetStarted":true,"defaultBanner":"/abtnode/og-banner.png"},"id":"2a6258f4-bdfb-591a-af65-f710fe4f6a6a","language":"en","locale":"en","languages":[{"value":"en","text":"English"},{"value":"zh","text":"简体中文"}],"headings":[{"value":"Preparation Requirements","depth":2},{"value":"Nginx Configuration","depth":2},{"value":"Update ABT Node Configuration","depth":2},{"value":"Configure the domain name of the blocklet","depth":2},{"value":"Others","depth":2},{"value":"Important","depth":2}],"navItems":[{"group":"/home/runner/work/abtnode-docs/abtnode-docs/src","title":"ABT Node","priority":999,"link":"/"}],"version":"v0.2.20","official":true,"originalPath":"/en/deployment/behind-reverse-proxy","sidebarContent":[{"url":null,"title":null,"pages":[{"title":"ABT Node Docs","path":"/en/"}]},{"url":"/en/introduction","title":"Introduction","pages":[{"title":"ABT Node Overview","path":"/en/introduction/abtnode-overview"},{"title":"ABT Node Setup","path":"/en/introduction/abtnode-setup"},{"title":"ABT Node Access","path":"/en/introduction/abtnode-access"}]},{"url":"/en/marketplace","title":"Marketplace","pages":[{"title":"Find and Install Blocklets","path":"/en/marketplace/find-and-install"},{"title":"Upgrade/downgrade blocklet","path":"/en/marketplace/upgrade-downgrade"}]},{"url":"/en/blocklet","title":"Blocklets","pages":[{"title":"Basic Operations","path":"/en/blocklet/basic-operations"},{"title":"Blocklet Environments","path":"/en/blocklet/environments"},{"title":"Core Blocklets","path":"/en/blocklet/core-blocklets"}]},{"url":"/en/router","title":"Service Gateway","pages":[{"title":"What is Service Gateway?","path":"/en/router/what-is-router"},{"title":"Service Gateway Usage","path":"/en/router/basic-usage"},{"title":"Binding domain names to sites and enabling SSL","path":"/en/router/bind-domain-and-ssl"},{"title":"Certificates for localhost","path":"/en/router/certificates-for-localhost"}]},{"url":"/en/deployment","title":"Deployment","pages":[{"title":"Production Best Practice","path":"/en/deployment/best-practice"},{"title":"Deploy ABT Node Using AWS AMI","path":"/en/deployment/from-aws-ami"},{"title":"Bind domain with reverse proxy server","path":"/en/deployment/behind-reverse-proxy"},{"title":"Run In Docker","path":"/en/deployment/run-in-docker"}]},{"url":"/en/misc","title":"Misc","pages":[{"title":"Node Settings","path":"/en/misc/node-settings"},{"title":"Member Management","path":"/en/misc/member-management"},{"title":"GraphQL Console","path":"/en/misc/graphql-console"}]},{"url":"/en/developer","title":"Developer Guide","pages":[{"title":"Configuring the development environment","path":"/en/developer/config-dev-env"},{"title":"ABT Node CLI","path":"/en/developer/abtnode-cli"},{"title":"Node Configuration","path":"/en/developer/configuration"},{"title":"Storage Structure","path":"/en/developer/storage-structure"},{"title":"Blocklet Specification","path":"/en/developer/blocklet-spec"},{"title":"Create Static Blocklets","path":"/en/developer/static-blocklets"},{"title":"Create DApp Blocklets","path":"/en/developer/dapp-blocklets"},{"title":"Blocklet Hooks","path":"/en/developer/blocklet-hooks"},{"title":"Bundle Blocklets","path":"/en/developer/bundle-blocklets"},{"title":"Publish Blocklets","path":"/en/developer/publish-blocklets"},{"title":"Blocklet Registry","path":"/en/developer/blocklet-registry"},{"title":"Developing Blocklets with Codespaces","path":"/en/developer/blocklet-codespaces"},{"title":"Configure Auth Service for Blocklet","path":"/en/developer/auth-service"},{"title":"Composable blocklet","path":"/en/developer/composable-blocklet"},{"title":"Docker Registry List","path":"/en/developer/docker-registry"}]}],"communityPath":"https://community.arcblockio.cn","githubUrl":"https://github.com/ArcBlock/abtnode-docs/tree/master/src/deployment/behind-reverse-proxy/index.md"}},"staticQueryHashes":["1358860651","1619896071","1812186216","2194038815"]}