如何 运行 Mercure 在生产中使用 Apache
How to run Mercure in production with Apache
我在使用 Mercure 的 Apache 服务器上有一个 Symfony 项目,我尝试在生产环境中设置 Mercure hub。
到 运行 生产中的 Mercure 集线器,我将存档 mercure_0.6.2_Linux_x86_64.tar.gz (https://github.com/dunglas/mercure/releases) 提取到我的根目录下的子文件夹 mercure项目。
然后我运行命令:
JWT_KEY='myJWTKey' ACME_HOSTS='example.com' ./mercure
用我的信息
但集线器没有 运行 并出现此错误:
FATA[0000] listen tcp :443: bind: permission denied
我看到了类似的问题()
但建议的答案使用 ADDR 更改端口,根据文档,"Let's Encrypt only supports the default port: to use Let's Encrypt, do not set this variable.".
如何 运行 Mercure 投入生产?
以下是我为解决问题所做的步骤:
I 运行 Mercure 使用此命令:
JWT_KEY='aVerySecretKey' ADDR='myhub.com:3000' CORS_ALLOWED_ORIGINS='https://mywebsite.com' DEBUG=1 ALLOW_ANONYMOUS=1 ./mercure
美居 运行 在这里:http://myhub.com:3000.
我使用 Apache 作为代理,参数如下:
ProxyPass / http://myhub.com:3000/
ProxyPassReverse / https://myhub.com/
所以现在,我可以在此处通过 HTTPS 访问集线器 https://myhub.com/hub from my domain https://mywebsite.com。
感谢 Mercure 的作者 dunglas。
我不知道这是否有帮助,但经过大量努力后,我让 Mercure 在这样的实时服务器上工作。 (我一直使用端口 9090。)在 Apache 域 conf 中:
ProxyPass /hub/ http://localhost:9090/
ProxyPassReverse /hub/ http://localhost:9090/
在Javascript中:
new URL('https://www.example.com/hub/.well-known/mercure');
在 Symfony 中:
MERCURE_PUBLISH_URL=https://www.example.com/hub/.well-known/mercure
注意不要混淆 MERCURE_JWT_TOKEN 和 MERCURE_JWT_SECRET。
来自 root,运行 Mercure 服务器像这样进行测试:
docker run -e JWT_KEY='!ChangeMe!' -e DEMO=1 -e ALLOW_ANONYMOUS=1 -e CORS_ALLOWED_ORIGINS='*' -e PUBLISH_ALLOWED_ORIGINS='*' -p 9090:80 dunglas/mercure
所以现在一切正常,没有 https / 443 问题。
我在使用 Mercure 的 Apache 服务器上有一个 Symfony 项目,我尝试在生产环境中设置 Mercure hub。
到 运行 生产中的 Mercure 集线器,我将存档 mercure_0.6.2_Linux_x86_64.tar.gz (https://github.com/dunglas/mercure/releases) 提取到我的根目录下的子文件夹 mercure项目。
然后我运行命令:
JWT_KEY='myJWTKey' ACME_HOSTS='example.com' ./mercure
用我的信息
但集线器没有 运行 并出现此错误:
FATA[0000] listen tcp :443: bind: permission denied
我看到了类似的问题(
如何 运行 Mercure 投入生产?
以下是我为解决问题所做的步骤:
I 运行 Mercure 使用此命令:
JWT_KEY='aVerySecretKey' ADDR='myhub.com:3000' CORS_ALLOWED_ORIGINS='https://mywebsite.com' DEBUG=1 ALLOW_ANONYMOUS=1 ./mercure
美居 运行 在这里:http://myhub.com:3000.
我使用 Apache 作为代理,参数如下:
ProxyPass / http://myhub.com:3000/
ProxyPassReverse / https://myhub.com/
所以现在,我可以在此处通过 HTTPS 访问集线器 https://myhub.com/hub from my domain https://mywebsite.com。
感谢 Mercure 的作者 dunglas。
我不知道这是否有帮助,但经过大量努力后,我让 Mercure 在这样的实时服务器上工作。 (我一直使用端口 9090。)在 Apache 域 conf 中:
ProxyPass /hub/ http://localhost:9090/
ProxyPassReverse /hub/ http://localhost:9090/
在Javascript中:
new URL('https://www.example.com/hub/.well-known/mercure');
在 Symfony 中:
MERCURE_PUBLISH_URL=https://www.example.com/hub/.well-known/mercure
注意不要混淆 MERCURE_JWT_TOKEN 和 MERCURE_JWT_SECRET。
来自 root,运行 Mercure 服务器像这样进行测试:
docker run -e JWT_KEY='!ChangeMe!' -e DEMO=1 -e ALLOW_ANONYMOUS=1 -e CORS_ALLOWED_ORIGINS='*' -e PUBLISH_ALLOWED_ORIGINS='*' -p 9090:80 dunglas/mercure
所以现在一切正常,没有 https / 443 问题。