首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony + Mercure连接问题。使用HTTPS而不是HTTP

Symfony + Mercure连接问题。使用HTTPS而不是HTTP
EN

Stack Overflow用户
提问于 2021-04-22 13:37:21
回答 1查看 2.5K关注 0票数 3

我试着在两个码头集装箱之间建立联系。一个是nginx服务器+ Symfony应用程序,另一个是Mercure。

我的应用程序工作很好,坞-组合构建也没有任何问题。问题是,当我尝试测试它,并试图发布从Symfony应用程序到Mercure的东西时,我得到了500个内部服务器错误,“发送更新失败”。消息。

在堆栈跟踪中,我可以看到得到了TransportException错误,与.env文件中的env变量不同。应用程序正在尝试使用HTTPS,而不是在.env文件中定义的HTTP。

“Symfony\Component\HttpClient\Exception\TransportException:. at vendor/symfony/http-client/Chunk/ErrorChunk.php:65”

SSL连接错误

代码语言:javascript
复制
###> symfony/mercure-bundle ###
# 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=http://mercure/.well-known/mercure

# The public URL of the Mercure hub, used by the browser to connect
MERCURE_PUBLIC_URL=http://localhost:9090/.well-known/mercure

MERCURE_PUBLISH_URL=http://mercure/.well-known/mercure

# The secret used to sign the JWTs
MERCURE_JWT_SECRET=<Proper JWT Token is here>
###< symfony/mercure-bundle ###

在Mercure容器里我得到:

代码语言:javascript
复制
mercure_1   | {"level":"debug","ts":1619097073.714639,"logger":"http.stdlib","msg":"http: TLS handshake error from 172.21.0.5:57420: no certificate available for 'mercure'"}

我的船坞-合成配置

代码语言:javascript
复制
services:

    api:
        build:
            context: ./api
            dockerfile: Dockerfile
        volumes:
            - ./api:/app
            - ./api/storage/logs/php-fpm:/var/log/php-fpm
        networks:
            - redio_network
        ports:
            - "7000:80"
        environment:
            <<: *common-variables

    mercure:
        image: dunglas/mercure
        environment:
            MERCURE_PUBLISHER_JWT_KEY: '!ChangeMe!'
            MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeMe!'
        ports:
            - "9090:80"
        networks:
            - redio_network
        volumes:
            - ./_data/caddy_data:/data
            - ./_data/caddy_config:/config
        command: /usr/bin/caddy run -config /etc/caddy/Caddyfile.dev

这是我的控制器,当我发布到Mercure主题时:

代码语言:javascript
复制
class ChatController extends AbstractController
{
    /**
     * @Route("/push", name="push")
     * @param Request $request
     * @param HubInterface $publisher
     * @return Response
     */
    public function push(Request $request, HubInterface $publisher): Response
    {
        $publisher->publish(new Update(
            '/chat',
            json_encode(['message' => 'hello!'])
        ));

        return $this->json('Done');
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 14:09:16

好吧我找到了。如果有同样的问题,请将SERVER_NAME变量添加到您的坞-组合配置中。Mercure使用默认设置为强制HTTPS的Caddy服务器。

代码语言:javascript
复制
mercure:
    image: dunglas/mercure
    environment:
        MERCURE_PUBLISHER_JWT_KEY: '!ChangeMe!'
        MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeMe!'
        SERVER_NAME: ":80"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67214389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档