gpt4 book ai didi

java - wss 协议(protocol)的 Apache 反向代理

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:23 25 4
gpt4 key购买 nike

我的应用程序将 SockJS 与 Spring 框架结合使用。我的服务器上有一个反向代理,用于将 https 请求重定向到 tomcat 容器。配置:

<VirtualHost *:443>
ProxyPreserveHost On

ProxyPass /boot http://127.0.0.1:8080/boot/
ProxyPassReverse /boot http://127.0.0.1:8080/boot/

ServerName MY_DOMAIN.com

SSLEngine on
SSLProtocol all
SSLCertificateFile /etc/apache2/ssl/muhamo.crt
SSLCertificateKeyFile /etc/apache2/ssl/muhamo.key
SSLCACertificateFile /etc/apache2/ssl/bundl.crt
</VirtualHost>

如何配置我的虚拟主机以将 wss 请求转发到我的应用程序?我收到如下错误消息:

Opening Web Socket...
sockjs.js:1213 WebSocket connection to 'wss://MY_DOMAIN.com/boot/tracking/557/jcf7btih/websocket' failed: Error during WebSocket handshake: Unexpected response code: 403

sockjs.js:807 POST https://MY_DOMAIN.com/boot/tracking/557/7cl9qov2/xhr_streaming 403 (Forbidden)

sockjs.js:807 POST https://MY_DOMAIN.com/boot/tracking/557/cvl8ti6k/xhr 403 (Forbidden)

最佳答案

不知道你有没有解决这个问题,我也遇到了同样的问题。我认为问题出在 apache 服务器上,但它是在 Spring 端。 403 代码就是线索。

在我的例子中,除了您的配置(经过必要的调整)之外,我所做的是添加以下内容:

# Disable forward proxying
ProxyRequests Off
# proxy wss:// to ws://
ProxyPassMatch ^/(.*)/websocket ws://localhost:8080/$1/websocket
# proxy ws fallbacks
ProxyPass /ws http://localhost:8080/ws
ProxyPassReverse /ws http://localhost:8080/ws

在 Spring(引导)方面:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}

}

setAllowedOrigins("*") 是克服 403 错误的缺失部分。

干杯

关于java - wss 协议(protocol)的 Apache 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com