Запуск локального шлюза dev IPFS, поддерживающего HTTPS

#node.js #reverse-proxy #ipfs

#node.js #обратный прокси #ipfs

Вопрос:

Я создаю распределенное веб-приложение, предназначенное для размещения в IPFS. Я хочу заниматься разработкой в веб-браузере, используя свой локальный шлюз для обслуживания своих файлов, но я использую API Javascript, которые не разрешены без обслуживания по протоколу HTTPS.

Я попытался запустить обратный прокси с самоподписанным ssl, указывающим на мой локальный http-шлюз IPFS, но когда я посещаю ссылки, используя обратный прокси, скажем, https://___hashhere___.ipfs.localhost:8081/ , я перенаправляюсь на http://___hashhere___.ipfs.localhost:8080/ :

 GATEWAY_PORT=$(ipfs config Addresses.Gateway | cut -d'/' -f 5)
HTTPS_PORT=$((GATEWAY_PORT 1))

echo "https proxy to your ipfs gateway now at: https://localhost:$HTTPS_PORT"
exec npx local-ssl-proxy --source $HTTPS_PORT --target $GATEWAY_PORT
  

Как я могу запустить локальный шлюз https ipfs с помощью одной или двух команд? Полагаю, мне нужен обратный прокси, который переписывает URL-адреса в ответах?

Ответ №1:

  • Если вы используете браузер на основе Chromium, то http://___hashhere___.ipfs.localhost:8080/ будет window.isSecureContext установлено значение true , и у вас будет доступ ко всем веб-API. Нет необходимости в настройке TLS для разработчиков на localhost с Chromium (в Firefox есть ошибка).

  • Если вы используете IPFS Companion, вы можете отключить его при разработке своего приложения, чтобы гарантировать, что запросы к ресурсам IPFS не перенаправляются на шлюз, установленный в настройках расширения браузера.

  • В рабочей среде вы развертываете go-ipfs за обратным прокси, и этот прокси завершает работу TLS. Вы можете управлять схемой протокола и хостом, используемым в некоторых перенаправлениях через X-Forwarded-Proto и X-Forwarded-Host заголовки, как указано в go-ipfs/docs/config.md

Комментарии:

1. Это очень полезно, спасибо! У меня действительно был включен IFPS companion, и это вызывало проблемы. Является ли эмпирическим правилом, что все домены localhost будут иметь window.isSecureContext=’true’?

2. Это верно для всех браузеров на базе Chromium, и я бы ожидал, что другие поставщики браузеров в какой-то момент реализуют привязку localhost к устройству обратной связи ( rfc6761 ), если они этого еще не сделали (обязательное условие для безопасного контекста).