gpt4 book ai didi

node.js - 处理 acme-challenge Letsencrypt 请求

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:17 25 4
gpt4 key购买 nike

我有一个 NodeJs 应用程序 使用 ProxyPassApache 配置之后 运行。 HTTPS 是使用 Letsencrypt 设置的。

您可能知道,要验证 Letsencrypt 证书,我们必须处理由 Letsencrypt 服务器发送的如下请求。

http://sub.afakedomain.com/.well-known/acme-challenge/some-random-stringhere

目前,请求结果为 404 Not Found,因为 ProxyPass 将请求直接重定向到我的 NodeJs 应用程序,它没有处理这个请求。

  • 一个解决方案是在我的 NodeJs 应用程序中定义一个路由来处理请求
  • 另一种解决方案是在 Apache 中检测请求,而不是将请求路由到 NodeJs 应用程序,而是将其直接路由到包含 .well-known 目录的文件夹。

我想使用Apache 解决方案,但找不到正确的方法。

知名目录路径

/var/www/html/.well-known/

我的虚拟主机设置

<VirtualHost *:80>
DocumentRoot /var/www/html/fail
ServerName sub.afakedomain.com
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>

<VirtualHost *:443>
ProxyPreserveHost On
ProxyRequests Off
ServerName sub.afakedomain.com
Proxypass / http://localhost:5555/
ProxyPassReverse / http://localhost:5555/

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/afakedomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/afakedomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/afakedomain.com/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/afakedomain.com/fullchain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

如果您有任何建议,请随时提出!谢谢!

最佳答案

如果你想排除 .well-known 目录被代理,你只需要添加一个排除项。在现有的 ProxyPass 行之前添加以下内容:

ProxyPass /.well-known/ !

您应该准备就绪。查看ProxyPass文档以获取更多信息。

关于node.js - 处理 acme-challenge Letsencrypt 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com