NGINX反向代理Domino服务器的Webmail路径配置问题
解决Domino NGINX反向代理的Webmail路径问题
核心问题分析
你遇到的问题主要有两个:
- 用户必须手动输入
/Mail才能访问Webmail,操作不够便捷; - 进入邮箱后URI自动变成小写
/mail,和后端Domino的大写路径不匹配,可能导致后续跳转或链接出错。
解决方案配置
下面是调整后的NGINX配置,我会逐块解释作用:
server { listen 80; server_name frontend; # 替换成你的前端域名/IP地址 # 根路径自动跳转Webmail,无需用户手动输入/Mail location / { return 302 /Mail; } # 大小写不敏感匹配/Mail或/mail请求,统一转发到后端Domino的正确路径 location ~* ^/mail { # 反向代理到Domino的Webmail路径 proxy_pass http://domino/Mail; # 传递关键请求头,让Domino识别正确的请求来源 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; # 替换Domino响应中的后端地址为前端地址,避免用户看到http://domino的链接 sub_filter 'http://domino' 'http://frontend'; sub_filter_once off; # 替换所有匹配的内容 sub_filter_types text/html text/css text/javascript application/json; } # 处理Domino其他基础路径的请求(如果有额外功能需要访问根路径下的其他资源) location / { proxy_pass http://domino/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; sub_filter 'http://domino' 'http://frontend'; sub_filter_once off; sub_filter_types text/html text/css text/javascript application/json; } }
配置细节解释
- 根路径自动跳转:
location /里的return 302 /Mail会让用户访问http://frontend/时,自动跳转到Webmail的入口路径,省去手动输入的步骤。 - 大小写不敏感匹配:
location ~* ^/mail使用~*标记实现大小写不敏感匹配,不管用户输入/Mail还是/mail,都会转发到后端的http://domino/Mail,从根源解决路径大小写不一致的问题。 - 请求头传递:
proxy_set_header系列配置确保Domino能正确识别请求的主机、客户端IP和协议,避免内部跳转时生成错误的路径。 - 响应内容替换:
sub_filter会把Domino返回的所有响应内容中的http://domino替换成http://frontend,这样用户在邮箱内点击的所有链接都会指向前端地址,不会出现跳转到后端Domino的情况,也彻底解决了进入邮箱后URI变成小写的问题。
额外注意事项
- 如果你的前端使用HTTPS,记得把
listen端口改成443,配置SSL证书,并将$scheme指定为https。 - 确保NGINX已经安装了
ngx_http_sub_module模块(大部分默认安装包会包含,若没有则需要重新编译NGINX添加该模块)。
内容的提问来源于stack exchange,提问作者ChaChaPoly
相关产品推荐
相关产品推荐

