#php #symfony #ssl #mercure
Вопрос:
Я пытаюсь закодировать чат с Symfony 5 и Mercure, но у меня возникли некоторые проблемы с настройкой. Я работаю с Windows 10.
Вот документация, которой я следовал : https://github.com/dunglas/mercure/blob/main/docs/hub/install.md
Я установил эту версию в своем проекте: mercure_0.13.0_Windows_arm64.zip. Затем я распаковал его и сразу после этого в своем терминале запустил « composer require symfony/mercure
«.
Это в моем .env
:
# See https://symfony.com/doc/current/mercure.html#configuration
# The URL of the Mercure hub, used by the app to publish updates (can be a local URL)
MERCURE_URL=:https://127.0.0.1:8000/.well-known/mercure
# The public URL of the Mercure hub, used by the browser to connect
MERCURE_PUBLIC_URL=https://127.0.0.1:8000/.well-known/mercure
# The secret used to sign the JWTs
MERCURE_JWT_SECRET="!ChangeMe!"
###< symfony/mercure-bundle ###```
Then I ran the Mercure server with this command line : ```$env:MERCURE_PUBLISHER_JWT_KEY='!ChangeMe!'; $env:MERCURE_SUBSCRIBER_JWT_KEY='!ChangeMe!'; .mercure.exe run -config Caddyfile.dev```.
In my PowerShell, I have this :
```2021/11/16 01:39:58.029 INFO http server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {"server_name": "srv0", "https_port": 443}
2021/11/16 01:39:58.029 INFO http enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"}
2021/11/16 01:39:58.111 INFO tls cleaning storage unit {"description": "FileStorage:C:\Users\toufi\AppData\Roaming\Caddy"}
2021/11/16 01:39:58.113 INFO tls finished cleaning storage units
2021/11/16 01:39:58.134 INFO pki.ca.local root certificate is already trusted by system {"path": "storage:pki/authorities/local/root.crt"}
2021/11/16 01:39:58.135 INFO http enabling automatic TLS certificate management {"domains": ["localhost"]}
2021/11/16 01:39:58.136 WARN tls stapling OCSP {"error": "no OCSP stapling for [localhost]: no OCSP server specified in certificate"}
2021/11/16 01:39:58.143 INFO autosaved config (load with --resume flag) {"file": "C:\Users\toufi\AppData\Roaming\Caddy\autosave.json"}
2021/11/16 01:39:58.143 INFO serving initial configuration```
It seems to run well, but in my browser when I run ```https://localhost/.well-known/mercure```,
I have :
```Not Found
The requested URL was not found on this server.
Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/7.4.25 Server at localhost Port 443```
Someone can help me because I don't know how to access to my Mercure server with my browser ?
Thank you very much
Ответ №1:
Эй, бен, тебе следует попробовать запустить https://localhost:8000/.well-known/mercure
в браузере вместо https://localhost/.well-known/mercure
Комментарии:
1. Я попытался
https://localhost:8000/.well-known/mercure
в своем браузере, но получил это сообщение :Ce site ne peut pas fournir de connexion sécurisée localhost a envoyé une réponse incorrecte. Essayez d'exécuter les diagnostics réseau de Windows. ERR_SSL_PROTOCOL_ERROR
2. вы должны настроить ssl в своем файле Caddyfile. файл dev или отключите его, если вы не хотите использовать https
3. Извините, единственный документ, который я нашел для настройки ssl, — это Docker, но я его не использовал
4. Чтобы полностью отключить HTTPS, установите глобальный параметр auto_https в значение off в файле caddyfile. dev для получения дополнительной информации вы можете проверить этот файл.rocks/docs/hub/config
5. Я сделал это в своем файле :
{ {$GLOBAL_OPTIONS} } { auto_https off } {$SERVER_NAME:localhost} log route { encode zstd gzip mercure { # Transport to use (default to Bolt) transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db} # Publisher JWT key publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG} # Subscriber JWT key subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG} # Extra directives {$MERCURE_EXTRA_DIRECTIVES} } respond /healthz 200 respond "Not Found" 404 }