91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Nginx設置密碼來保護以太坊JSON-RPC的API

發布時間:2021-12-13 09:43:50 來源:億速云 閱讀:229 作者:iii 欄目:互聯網科技

這篇文章主要介紹“怎么用Nginx設置密碼來保護以太坊JSON-RPC的API”,在日常操作中,相信很多人在怎么用Nginx設置密碼來保護以太坊JSON-RPC的API問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Nginx設置密碼來保護以太坊JSON-RPC的API”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Go Ethereum(geth)是以太坊節點最受歡迎的軟件。其他流行的以太坊實現是Parity和cpp-ethereum等。分布式應用程序(Dapps)是JavaScript編碼的網頁,通過JSON-RPC API協議連接到任何這些以太坊節點軟件,該協議是在HTTP協議之上自行運行的。

geth或沒有節點軟件本身不提供安全網絡。將Ethereum JSON-RPC API暴露給公共Internet是不安全的,因為即使禁用私有API,這也會為瑣碎的拒絕服務攻擊打開一扇門。節點軟件本身不需要提供安全的網絡原語,因為這種內置功能會增加復雜性并為關鍵區塊鏈節點軟件增加攻擊面。

Dapps本身是純客戶端HTML和JavaScript,不需要任何服務器,它們可以在任何Web瀏覽器中運行,包括移動和嵌入式瀏覽器,如Mist錢包內的一個。

使用Nginx代理作為HTTP基本身份驗證器

有幾種方法可以保護對HTTP API的訪問。最常見的方法包括HTTP頭中的API令牌,基于cookie的身份驗證或HTTP基本訪問身份驗證。

HTTP基本身份驗證是HTTP協議的一個非常古老的功能,其中Web瀏覽器打開一個本機彈出對話框,詢問用戶名和密碼。它本質上的保護是有限的,但非常容易實現,非常適合需要為有限的互聯網受眾暴露私有Dapp的用例。這些用例包括顯示Dapp演示,私有和許可的區塊鏈應用程序或將以太坊功能作為軟件即服務解決方案的一部分。

Nginx

Nginx是最受歡迎的開源Web服務器應用程序之一。我們將展示如何設置Nginx Web服務器,以便它使用HTTP Basic Auth私下為你的Dapp(HTML文件)和geth JSON-RPC API提供服務。

我們假設Ubuntu 14.04更新的Linux服務器。文件位置可能取決于使用的Linux發行版。

安裝Nginx

在Ubuntu Linux 14.04或更高版本上安裝Nginx:

sudo apt install nginx apache2-utils

配置Nginx

我們假設我們編輯默認的網站配置文件/etc/nginx/sites-enabled/default。我們使用proxy_pass指令與在localhost:8545中運行的geth進行通信:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name demo.example.com;


    # Geth proxy that password protects the public Internet endpoint
    location /eth {
        auth_basic "Restricted access to this site";
        auth_basic_user_file /etc/nginx/protected.htpasswd;

        # Proxy to geth note that is bind to localhost port                        
        proxy_pass http://localhost:8545;            
    }

    # Server DApp static files
    location / {
        root /usr/share/nginx/html;
        index index.html

        auth_basic "Restricted access to this site";
        auth_basic_user_file /etc/nginx/protected.htpasswd;
    }       
}

使用密碼創建HTTP Basic Auth用戶演示:

sudo htpasswd -c /etc/nginx/protected.htpasswd demo

配置geth

開始使用geth守護進程的最簡單方法是在UNIX screen中運行它:

screen

geth  # Your command line parameters here

退出screen 使用CTRL+A, D

請參閱geth private testnet說明

配置Dapp

在你的Dapp中,使web3.js使用/eth端點:

  function getRPCURL() {

    // ES2016 
    if(window.location.href.includes("demo.nordledger.com")) {      
      // Password protected geth deployment
      return "http://demo.nordledger.com/eth"

    } else {
        // Localhost development
      return "http://localhost:8545";  
    }
  }

  // ...

  web3.setProvider(new web3.providers.HttpProvider(getRPCURL()));

部署Dapp

將DApp文件復制到服務器上的/usr/share/nginx/html。這包括index.html以及相關的JavaScript和CSS資源。

Bonus - 部署shell腳本示例:

#!/bin/bash
#
# A simple static HTML + JS deployment script that handles Nginx www-data user correclty.
# Works e.g. Ubuntu Linux Azure and Amazon EC2 Ubuntu server out of the box.
#

set -e
set -u

# The remote server we are copying the files using ssh + public key authentication.
# Specify this in .ssh/config
REMOTE="nordledger-demo"

# Build dist folder using webpack
npm run build

# Copy local dist folder to the remote server Nginx folder over sudoed
# Assum the default user specified in .ssh/config has passwordless sudo
# https://crashingdaily.wordpress.com/2007/06/29/rsync-and-sudo-over-ssh/
rsync -a -e "ssh" --rsync-path="sudo rsync" dist/* --chown www-data:www-data $REMOTE:/usr/share/nginx/html/

重啟Nginx

為Nginx做一次硬重啟:

service nginx stop service nginx start

測試并迭代

訪問網站,看看您的Dapp是否連接到代理的Geth。

檢查/var/log/nginx/error.log以獲取詳細信息。

如果從/eth端點獲得502 Bad Gateway,請確保geth正在作為服務器上的后臺進程正常運行。

到此,關于“怎么用Nginx設置密碼來保護以太坊JSON-RPC的API”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海安县| 双辽市| 错那县| 开封县| 黄陵县| 乃东县| 缙云县| 高邑县| 玉环县| 阿合奇县| 贡嘎县| 石台县| 达孜县| 肇州县| 大足县| 梁河县| 阿合奇县| 鹤岗市| 浦江县| 西平县| 衡阳县| 自贡市| 七台河市| 尼玛县| 玉溪市| 江华| 罗城| 新蔡县| 潍坊市| 栖霞市| 桃江县| 巴彦淖尔市| 弥渡县| 峨眉山市| 庄浪县| 望谟县| 斗六市| 章丘市| 江阴市| 黄浦区| 桓台县|