websocket 使用WSS到WS的Caddy 2反向代理

7xllpg7q  于 2022-12-18  发布在  其他
关注(0)|答案(2)|浏览(301)

我有我的家庭服务器,并使用Caddy 2从互联网访问本地服务,并为子域自动生成证书。Caddy在443端口上侦听https连接,并使用不安全的http将它们侦听到不同的本地端口。我不知道它是否足够安全,但是我很重视路由器的安全性,我可以接受局域网内不安全的连接。而且用caddy为新服务添加新的子域也很容易,我喜欢它。
所以,最近我试图使Vue 3应用程序,我未能通过球童暴露到互联网.它确实与本地IP工作,但不是从互联网.在谷歌控制台我看到这:

WebSocketClient.js? 5586:16 Mixed Content:
The page at 'https://vue.domain.com/' was loaded over HTTPS, but attempted to connect to the
insecure WebSocket endpoint 'ws://192.168.1.1:8000/ws'. 
This request has been blocked; this endpoint must be available over WSS.

我的球童配置是用yaml编写的json文件(为了可读性):

apps:
  http:
    http_port: 8080
    https_port: 443
    servers:
      myserver:
        listen:
        - ":443"
        routes:
        - match:
          - host:
            - vue.domain.com
          handle:
          - handler: subroute
            routes:
            - handle:
              - handler: reverse_proxy
                upstreams:
                - dial: 127.0.0.1:8000
          terminal: true

我应该怎么做才能让它工作?是vue开发服务器\前端应用程序设置的问题还是球童的问题?我有这样的问题与其他服务也使用web套接字。
操作系统:Debian 11,球童v2.5.1,Vue 3.2.13配置了vue用户界面。

gtlvzcf8

gtlvzcf81#

如果您的应用中有index.html文件,请添加此 meta标签:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
vlju58qv

vlju58qv2#

是的,对其他人来说,问题就在这里ws://192.168.1.1:8000/ws。当你应该使用wss的时候,你却在使用ws。我想Lenich也弄明白了这一点。

相关问题