主页 > imtoken钱包会被冻结吗 > 使用 Nginx 密码保护以太坊 JSON-RPC API

使用 Nginx 密码保护以太坊 JSON-RPC API

imtoken钱包会被冻结吗 2023-01-18 17:59:49

本文面向以太坊智能合约应用程序开发人员,讨论如何在密码保护后安全地运行以太坊节点以通过 Internet 安全输出。 Go Ethereum(geth)是以太坊节点最流行的软件。 其他流行的以太坊实现包括 Parity 和 cpp-ethereum 等。 分布式应用程序 (Dapps) 是 JavaScript 编码的网页,通过 JSON-RPC API 协议连接到任何这些以太坊节点软件,该协议在 HTTP 协议之上运行。 geth 或无节点软件本身不提供安全网络。 将以太坊 JSON-RPC API 暴露给公共互联网是不安全的,因为即使禁用私有 API,这也为普通的拒绝服务攻击打开了大门。 节点软件本身不需要提供安全的网络原语,因为这种内置功能会增加复杂性并增加关键区块链节点软件的攻击面。 Dapps 本身是纯客户端 HTML 和 JavaScript,不需要任何服务器,它们可以在任何网络浏览器中运行,包括移动和嵌入式浏览器,例如 Mist 钱包中的浏览器。 ### 使用 Nginx 代理作为 HTTP 基本验证器有几种方法可以保护对 HTTP API 的访问。 最常见的方法包括 HTTP 标头中的 API 令牌、基于 cookie 的身份验证或 [HTTP 基本访问身份验证]()。

以太坊挖矿手机app_以太坊经典和以太坊_以太坊APP

HTTP 基本身份验证是 HTTP 协议的一项非常古老的功能,Web 浏览器会打开一个本机弹出对话框,要求输入用户名和密码。 它本质上在保护方面是有限的,但非常容易实施,非常适合需要将私人 Dapps 暴露给有限的互联网受众的用例。 这些用例包括显示 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 -启用/默认`。 我们使用 [proxy_pass 指令](#proxy_pass) 与在 localhost:8545 中运行的 geth 通信: ```server { listen 80 default_server; listen [::]:80 default_server ipv6only=on;server_name demo.example。 com;# 密码保护公共 Internet 端点位置的 Geth 代理 /eth {auth_basic "Restricted access to this site";auth_basic_user_file /etc/nginx/protected.htpasswd;# 代理到 geth 注意绑定到 localhost portproxy_pass :8545;} # 服务器 DApp 静态文件位置 / {root /usr/share/nginx/html;index index.htmlauth_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 [屏幕]() 中运行它: ``` screeneth # 你的命令行参数在这里``` 要退出 `screen` 使用 `CTRL+A, D`。

以太坊APP_以太坊经典和以太坊_以太坊挖矿手机app

[参见 geth 私有测试网描述]()### 配置 Dapp 在你的 Dapp 中,让 web3.js 使用 `/eth` 端点:``` function getRPCURL() { // ES2016if(window.location.href.includes( "demo.nordledger.com")) {// 密码保护 geth deploymentreturn "http://demo.nordledger.com/eth"} else {// Localhost developmentreturn "http://localhost:8545";} } // ...web3.setProvider(new web3.providers.HttpProvider(getRPCURL()));```### 部署 Dapp 将 DApp 文件复制到服务器上的 `/usr/share/nginx/html`。 这包括 index.html 和相关的 JavaScript 和 CSS 资源。 奖励 - 部署 shell 脚本示例:```#!/bin/bash## 一个简单的静态 HTML + JS 部署脚本,用于处理 Nginx www-data user correclty。# 开箱即用,例如 Ubuntu Linux Azure 和 Amazon EC2 Ubuntu 服务器.#set -eset -u# 我们正在使用 ssh + 公钥身份验证复制文件的远程服务器。# 在 .ssh/configREMOTE="nordledger-demo" 中指定此项# Build dist folder using webpacknpm run build#复制本地 dist 文件夹通过 sudoed 到远程服务器 Nginx 文件夹# 假设 .ssh/config 中指定的默认用户具有无密码 sudo# 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。

以太坊APP_以太坊挖矿手机app_以太坊经典和以太坊

检查“/var/log/nginx/error.log”以获取详细信息。 如果您从 `/eth` 端点收到 502 Bad Gateway,请确保 geth 在服务器上作为后台进程正常运行。 另外分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程: > - 【java以太坊开发教程】(),主要针对java和android程序员开发区块链以太坊web3j详解。 > - [python Ethereum](),主要供python工程师使用web3.py详细开发区块链以太坊。 > - [phpEthereum]()以太坊APP,主要介绍使用php进行智能合约开发交互,账户创建,交易,转账,代币开发,过滤交易等 > - [以太坊入门教程](),主要介绍智能合约以及dapp应用开发,适合入门。 > - 【以太坊开发进阶教程】(),主要介绍使用node.js、mongodb、blockchain、ipfs实现去中心化电商DApp实战,适合进阶。 > - [C#Ethereum](),主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器与交易等 > - [EOS教程](),本课程帮助您快速入门EOS区块链去中心化应用开发,涵盖EOS工具链、账户和钱包、发行代币、智能合约开发部署、使用代码和智能合约交互等核心知识点,最后综合运用各个知识点,完成一个笔记DApp的开发。

以太坊APP_以太坊挖矿手机app_以太坊经典和以太坊

> - 【java比特币开发教程】(),本课程面向初学者,涵盖了比特币的核心概念,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,并详细讲解了如何在Java代码中集成比特币支持功能,如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习教程。 > - 【php比特币开发教程】(),本课程面向初学者,涵盖了比特币的核心概念,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,并详细讲解了如何在Php代码中集成比特币支持功能以太坊APP,如创建地址、管理钱包、构建裸交易等,是Php工程师不可多得的比特币开发学习教程。 这里是[原文]()

以太坊经典和以太坊_以太坊APP_以太坊挖矿手机app