【发布时间】:2017-10-04 19:43:54
【问题描述】:
我有一个 NodeJs 应用,使用 ProxyPass 在Apache 配置之后 运行。 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>
如果您有任何建议,请随时提出!谢谢!
【问题讨论】:
标签: node.js apache lets-encrypt