You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin23+SpringBoot2.7登录时HTTPS环境下出现HTTP请求异常

问题排查与解决方案

核心原因

Nginx作为反向代理时,会把外部的HTTPS请求转换成HTTP转发给SpringBoot应用,导致Vaadin无法感知用户实际使用的是HTTPS协议,因此生成的跳转URL会错误地使用HTTP。

1. 修正Nginx代理配置

在Nginx的HTTPS站点配置中,添加转发头告知后端应用真实的请求协议:

server {
    listen 443 ssl;
    server_name 你的域名;

    # SSL证书相关配置
    ssl_certificate /证书路径/fullchain.pem;
    ssl_certificate_key /证书路径/privkey.pem;

    location / {
        proxy_pass http://SpringBoot服务器IP:端口;
        # 关键配置:传递真实协议、主机和客户端IP
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        
        # Vaadin依赖WebSocket,需添加以下配置支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

2. 配置SpringBoot识别转发头

在SpringBoot的配置文件中添加以下配置,让应用信任Nginx传递的转发头:

application.properties:

server.forward-headers-strategy=framework

application.yml:

server:
  forward-headers-strategy: framework

注:如果是SpringBoot 2.2及以下版本,替换为server.use-forward-headers=true

3. 可选:强制HTTP跳转HTTPS

在Nginx中添加80端口的配置,把所有HTTP请求强制重定向到HTTPS:

server {
    listen 80;
    server_name 你的域名;
    return 301 https://$host$request_uri;
}

4. 验证路由逻辑

你的StartView转发代码本身没有问题,只要后端正确识别了HTTPS协议,event.forwardTo(ServiceView.class)会自动生成HTTPS的跳转地址,无需修改Java代码。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:35:04