大家好,所以我正在研究sockJS网络套接字与angular作为前端和JAVA作为后端,一切工作正常,在本地,但我得到**net::ERR_SSL_PROTOCOL_ERROR*
Http前端到http后端工作Https前端到http后端不工作我如何通过nginx或任何解决方案来解决这个问题??
我的sockjs位于nginx后面
下面是我的nginx conf文件
server {
listen 0.0.0.0:443 ssl http2 default_server;
server_name test-xyz.pcr.com;
client_max_body_size 20M;
ssl_certificate /etc/nginx/ssl/xyz_cert.crt;
ssl_certificate_key /etc/nginx/ssl/xyz_decrypt.key;
gzip on;
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/json image/svg+xml image/x-icon font/opentype text/x-component application/x-font-ttf;
error_log /var/log/nginx/error_log warn;
location / {
proxy_ssl_name test-xyz.pcr.com;
proxy_ssl_server_name on;
root /usr/share/nginx/html;
index index.html;
try_files $uri /index.html;
client_max_body_size 20M;
}
location /api/ {
proxy_pass http://test-xyz.pcr.com:8080/api/;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header Connection 'upgrade';
}
location /socket/ {
proxy_pass http://test-xyz.pcr.com:8080/socket/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
我已经尝试过了,但仍然得到一个错误
角锉
public connect() {
var socket = new SockJS("https://test-xyz.pcr.com:8080/socket");
var stompClient = Stomp.over(socket);
stompClient.connect({}, (frame) => {
console.log('Connected: ' + frame);
stompClient.subscribe('/chat', (payload) => {
if(payload.body.indexOf('completed') > -1){
this.uploadLoading = false
this.fetchDataFromDb()
this.snackBar.open("Data uploaded sucessfully..", "Dismiss", { duration: 4000 });
console.log("callingDB")
}else{
this.progressMessage = payload.body
}
});
}, (error) => {
this.uploadLoading = false
console.log("onError() called");
console.log("error: ",error);
});
};
JAVA配置
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/socket")
.setAllowedOriginPatterns("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")
.enableSimpleBroker("/chat"); // Enables a simple in-memory broker
}
}
我也尝试了下面的修复--public-host=0.0.0.0:0也没有工作
我也得到了这个错误的后端java,我明白它是由于Https流量从443来到http 8080端口我如何通过传递这个nginx
我是一个初学者,我不知道我做错了什么,任何建议将是有益的
1条答案
按热度按时间v1l68za41#
因为我是一个初学者,经过大量的尝试和错误,我发现这不是nginx的问题。问题是我的8080端口不接受https请求,因为它是一个http端口,所以我重新配置了我的后端接受8443上的https,并将https套接字连接重定向到8443 Enable https in Spring Boot