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

iRedMail服务器Nginx配置疑问:代理Vaadin服务及IPv6访问问题

问题解答

一、反向代理Vaadin服务到特定子域名

完全可以实现,操作步骤如下:

  1. 先在服务器的其他端口(比如8080)启动Vaadin服务,确保本地能通过http://localhost:8080正常访问。
  2. 在Nginx配置中新增一个server块,针对目标子域名(比如vaadin.yourdomain.com)配置反向代理:
server {
    listen 80;
    listen [::]:80;
    server_name vaadin.yourdomain.com;
    # 自动重定向到HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name vaadin.yourdomain.com;

    # 复用iRedMail的SSL模板配置
    include /etc/nginx/templates/ssl.tmpl;

    access_log /var/log/nginx/vaadin_access.log;
    error_log /var/log/nginx/vaadin_error.log;

    location / {
        proxy_pass http://localhost:8080;
        # 传递必要的请求头
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Vaadin依赖WebSocket,添加以下配置支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
  1. 执行nginx -t检查配置语法,确认无误后重启Nginx:systemctl restart nginx。
  2. 确保子域名vaadin.yourdomain.com的DNS解析(包括IPv4的A记录和IPv6的AAAA记录)已指向服务器公网IP。

二、IPv6监听无法连接的问题排查

结合你提供的配置,从以下几个方向排查:

  1. 同时开启IPv4和IPv6监听:当前配置只启用了IPv6的[::]:443监听,注释掉了IPv4的443监听,建议同时开启两者,覆盖不同网络环境的客户端:
listen 443 ssl http2;
listen [::]:443 ssl http2;
  1. 检查服务器IPv6网络状态:
    • 执行ip -6 addr确认服务器已配置公网IPv6地址(而非仅本地链路地址)。
    • 确认防火墙/安全组开放了IPv6的80、443端口:比如用ufw的话,执行ufw allow in ipv6 80/tcp和ufw allow in ipv6 443/tcp;云服务器还需在控制台安全组中开放对应IPv6端口。
  2. 验证DNS解析:确认域名已配置正确的AAAA记录,指向服务器公网IPv6地址。
  3. 测试连通性:在本地执行curl -6 https://yourdomain.com,查看是否能正常响应;同时检查Nginx的error1.log,根据报错信息定位具体问题。

内容的提问来源于stack exchange,提问作者Andrea D'Adamo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:51:14