- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试设置 LetsEncrypt(现在显然是 Greenlock)以使用 Express 进行端口转发。
我有this first issue我解决了:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3443
问题是,现在,我得到:
Fetching certificate for 'xxx' to use as default for HTTPS server...
[acme-v2] handled(?) rejection as errback:
Error: connect ECONNREFUSED 127.0.1.1:80
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14)
Error loading/registering certificate for 'xxx':
Error: connect ECONNREFUSED 127.0.1.1:80
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.1.1',
port: 80
}
我的应用程序现在是这样的:
require("greenlock-express")
.create({
server: "https://acme-staging-v02.api.letsencrypt.org/directory",
email: "xxx@gmail.com", // The email address of the ACME user / hosting provider
agreeTos: true, // You must accept the ToS as the host which handles the certs
configDir: "~/.config/acme/", // Writable directory where certs will be saved
communityMember: true, // Join the community to get notified of important updates
telemetry: true, // Contribute telemetry data to the projec
store: require('greenlock-store-fs'),
approveDomains: ['xxx.xxx.xxx'],
// Using your express app:
// simply export it as-is, then include it here
app: require("../app.js")
//, debug: true
})
.listen(3000, 3443);
显然我无法将端口 80 和 443 与 NodeJS 一起使用,但我也无法将任何其他端口与 greenlock 一起使用...解决方法是什么?
最佳答案
我是《格林洛克》的作者。
Let's Encrypt 是 EFF 的免费 SSL 服务的品牌名称。
Greenlock 是我的 JavaScript 客户端为其服务使用的品牌名称。
当他们开始为 Let's Encrypt 申请商标时,我更改了名称。
如果您遵循 Greenlock 快速入门,您就不会失败。 :)
此外,虽然是老歌,但还是不错的:
在普通 VPS(例如 Digital Ocean、Linode、Vultr 或 Scaleway)上,其中磁盘是永久性的,请使用“netcap”。这将允许非 root 用户绑定(bind)到特权端口:
sudo setcap 'cap_net_bind_service=+ep' $(which node)
多田!现在您可以以普通用户身份运行 node ./server.js --port 80
!
旁白:
您还可以使用systemd
来停止和启动您的服务。由于 systemd
有时是一个 p.i.t.a.,所以我写了一个 wrapper script in Go这使得部署 Node 项目变得非常容易:
# Install
curl https://rootprojects.org/serviceman/dist/linux/amd64/serviceman -o serviceman
chmod +x ./serviceman
sudo serviceman /usr/local/bin
# Use
cd ./my/node/project
sudo serviceman --username $(whoami) --cap-net-bind add npm start
或者,如果您的服务器不名为“server.js”(事实上的标准),或额外的选项:
cd ./my/node/project
sudo serviceman --username $(whoami) --cap-net-bind add node ./my-server-thing.js -- --my-options
所做的就是使用合理的默认值创建您的 systemd
文件。我建议您也查看 systemd
文档,但它有点难以理解,并且可能有更多令人困惑和其他糟糕的教程,而不是简单且良好的教程。
我回答了你提到的问题: https://stackoverflow.com/a/58388665/151312
它可能会遭到 AWS 顽固分子的反对......但是:
不要使用AWS。使用 VPS。
我真的很喜欢Digital Ocean和Vultr。
此外,还有适用于这两者的 Greenlock DNS-01 插件。这将使您的生活变得非常轻松。
Greenlock 的默认验证必须通过端口 80 上的 HTTP 进行。这是规范的一部分。它们不能通过 HTTPS 或任何其他端口。
但是,如果您需要 SSL/TLS 来实现专用网络(这可能不是您的问题),您可以使用 DNS-01 插件。如上所述,与 Digital Ocean、Vultr 和其他一些集成非常简单:
大约有十几个不同的插件。除了通配符域和专用网络之外,您不必使用它们,但如果您认为在同一位置管理 DNS 和 VPS 对您有利,我强烈建议使用 DNS-01 而不是 HTTP-01。
除非您是专家并且知道自己在做什么以及为什么这样做,否则不要进行移植。你会遇到困难,事情不会如你所愿。
你如何成为一名专家...有很多方法(而且这并不难)...但是,据我了解,这并不能真正帮助你实现最大目标近期目标。
抱歉,我无法提供比这更多的帮助,但这是一个很大的话题。
关于node.js - greenlock(让'加密)与快速和端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58374933/
我想知道两者都可以 UnicastRemoteObject.exportObject(Remote,portNo) & LocateRegistry.createRegistry(portNo); p
我有一个运行 tomcat 8.0.23 和 apache httpd 服务器的 vps。在 tomcat 中我有 3 个项目让我们用下面的名字来调用它们: /firstpro /secondpro
我试图将非 SSL 端口 8080 上的流量重定向到 SSL 端口 8443(在 Jboss 4.2.3.GA 版本上),但它不起作用。当我在此端口上访问我的 web 应用程序时,它会停留在该端口上并
跟进: Possible to query the native inbox of a mobile from J2ME? 我怎么知道Kannel将 SMS 发送到 native 收件箱端口(我想是端
我想用 python 开发一个代码,它将在本地主机中打开一个端口并将日志发送到该端口。日志只是 python 文件的命令输出。 喜欢: hello.py i = 0 while True:
我的 tomcat 在我的 linux 机器上独立运行在端口 7778 上。我已经将 apache 配置为在端口 443 上的 ssl 上运行。 我的 httpd.conf 如下: Liste
我正在使用 React Native 作为我想要部署到 iOS 和 Android 的头像生成器。我正在为我的服务器使用 Express,它使用 localhost:3000,react native
我正在使用主板(MSI Gaming主板)和两个支持NIC卡的e1000e驱动程序构建自定义操作系统。我想使用NIC卡中的端口而不是板载端口。 为了禁用板载端口,我尝试使用 70-persistanc
我目前使用的是xampp 1.7.0,我的php版本是5.2.8 我将我的 php.ini 文件更改为: [mail function] ; For Win32 only. SMTP = smtp.g
我有以下代码来配置 Jetty 服务器: @Configuration public class RedirectHttpToHttpsOnJetty2Config { @Bean p
我使用 Ubuntu 使用 Certbot 生成了一个 SSL。这已经自动更新了我的 Nginx 配置文件并添加了一个额外的监听端口。我担心我是否只需要监听一个端口(80 或 443)而不是两个端口,
我被困在一个点,我必须调用 pentaho API 来验证来自 reactJS 应用程序的用户。两者都在我的本地机器上。到目前为止我尝试过的事情: a) 在 reactJS 配置文件 - packag
我的 native 项目在 android 模拟器上运行 但是每当我尝试将我的项目与我的 android 设备连接时,就会出现上述错误。 注意:我的手机和笔记本电脑使用相同的 wifi 连接。 请帮我
我正在运行 Elasticsearch 服务器。除了 9200/9300 端口外,Elasticsearch 还开放了很多端口,如下所示。 elasticsearch-service-x64.exe
<portType> 元素是最重要的 WSDL 元素 <portType>可描述一个 web service、可被执行的操作,以及相关的消息 我们可以把 <portT
Stack Overflow 的其他地方有一个关于让 Icecast 出现在端口 80 上的问题,我已经阅读了该问题,但仍然无法让我的服务器在端口 80 上工作。 我的 icecast.xml 有这些
如果这是一个简单的问题,我很抱歉,我对这种事情不熟悉。 我正在尝试确定我的代理服务器 ip 和端口号,以便使用 google 日历同步程序。我使用谷歌浏览器下载了 proxy.pac 文件。最后一行是
我想知道 cassnadra 是否对所有 JMX 连接/节点间通信使用 7199 端口?与早期版本一样,7199 仅用于初始握手,但后来它使用随机选择 1024-65355 端口之间的任何端口。 谢谢
在docker hub中,有一个容器,该容器在启动时会默认打开9000端口。可以通过传递环境变量server__port来覆盖该端口。 我正在尝试在dockerfile中传递Heroku $ PORT
我已经在互联网上公开的虚拟机中安装了 docker。我已经在 VM 的 docker 容器中安装了 mongodb。Mongodb 正在监听 27017港口。 我已经使用以下步骤安装 docker
我是一名优秀的程序员,十分优秀!