我在使用 Mercure 的 Apache 服务器上有一个 Symfony 项目,并且我尝试在生产中设置 Mercure hub。
为了在生产中运行 Mercure hub,我将存档 Mercure_0.6.2_Linux_x86_64.tar.gz ( https://github.com/dunglas/mercure/releases ) 提取到项目根目录下的子文件夹 Mercure 中。
然后我运行命令:
JWT_KEY='myJWTKey' ACME_HOSTS='example.com' ./mercure
Run Code Online (Sandbox Code Playgroud)
与我的信息
但集线器无法运行并出现以下错误:
FATA[0000] 监听 tcp:443:绑定:权限被拒绝
我看到了类似的问题(How to run Mercure in production),但建议的答案使用 ADDR 来更改端口,并且根据文档,“Let's Encrypt 仅支持默认端口:要使用 Let's Encrypt,请勿设置此变量。” 。
如何在生产环境中运行 Mercure?
以下是我为解决问题所采取的步骤:
我使用以下命令运行 Mercure:
JWT_KEY='aVerySecretKey' ADDR='myhub.com:3000' CORS_ALLOWED_ORIGINS='https://mywebsite.com' DEBUG=1 ALLOW_ANONYMOUS=1 ./mercure
Run Code Online (Sandbox Code Playgroud)
所以,Mercure 在这里运行:http://myhub.com:3000。
我使用 Apache 作为代理,参数如下:
ProxyPass / http://myhub.com:3000/
ProxyPassReverse / https://myhub.com/
Run Code Online (Sandbox Code Playgroud)
现在,我可以从我的域https://mywebsite.com访问https://myhub.com/hub中的 HTTPS 中心。
感谢《Mercure》的作者邓格拉斯。