我目前正在与geth一起创建私有区块链。要直接启用来自浏览器的调用,我需要在geth
上启用ssl支持。我使用NGINX创建了一个反向代理,将https调用重定向到http调用。
将在我的计算机内对https://mydomain/chain进行呼叫,并将其重定向到http://localhost:8080。
我的问题是我实际上可以通过HTTP与RPC接口进行交互(在http://mydomain:8080处,但是每当我尝试使用web3通过HTTPS调用时,我都会得到Invalid JSON RPC response: ""
。
注意:Metamask实际上可以通过HTTPS进行事务。
我的NGINX配置为:
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /home/ubuntu/keys/server.crt;
ssl_certificate_key /home/ubuntu/keys/server.key;
ssl_session_timeout 5m;
location /chain {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
简单呼叫失败: const Web3 = require('web3');
const provider = "https://52.47.74.162/chain"
let web3 = new Web3(new Web3.providers.HttpProvider(provider));
web3.eth.getBalance("0x1bb9747d9779270d26f04672904e338BBDc90089")
.then(s => console.log(s))
.catch(e => console.log(e))
我开始使用geth --rpc --rpcport 8080 --rpccorsdomain '*' --datadir data/ --identity 'MyPrivateBlockchain' --rpcaddr 0.0.0.0 --rpcapi 'net,web3,eth,personal,json' --port 30303 --networkid 12344321 --rpcvhosts=*
我不知道它在哪一部分上失败了, 预先感谢。