Domino 服务器前端的 NGINX 反向代理

Domino 服务器前端的 NGINX 反向代理

我正在尝试在 Domino 服务器前面实现反向代理。Webmail URI 为http://domino/Mail,这意味着基本 URI 为http://domino/。考虑到这一点,我为 NGINX 创建了以下配置:

upstream webmail {
     server 192.168.32.1:80; #internal Domino IP
}

server {
    listen 80;

    access_log            /var/log/nginx/mail.access.log;
    error_log             /var/log/nginx/mail.error.log;

    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 http;
    proxy_read_timeout      90;
    proxy_http_version 1.1;
    proxy_redirect http://domino http://frontend;

    location / {
        proxy_pass              http://webmail;
    }
}

但使用此配置,用户始终必须输入http://frontend/Mail才能访问网络邮件。修改该行以读取:

location / {
        proxy_pass              http://webmail/Mail;
    }

这也是不可能的,因为一旦用户访问了他们的邮箱,URI 就会读取http://frontend/mail

我不确定如何修改或添加位置以将所有查询重定向到,http://frontend/http://frontend/Mail不会导致 URIhttp://domino/Mailsomefileondomino传递到后端。

答案1

解决办法是添加以下内容:

 location / {
        proxy_pass http://webmail/;
    }

    location = / {
        proxy_pass http://webmail/Mail;
    }

检查= /确切路径

答案2

  1. 要重定向来自 / 的所有流量,仅限http://前端/http://frontend/邮件添加

    location = / {
        return 301 http://frontend/Mail;
    }
    

    这将有效,因为 nginx 确实=在其他位置之前匹配位置。请参阅这里

  2. 将所有请求通过 proxy_passhttp://前端/* 将此部分保留到内部 Domino 服务器

    location / {
        proxy_pass http://webmail;
    }
    

附加说明:考虑使用 https 来保护网络邮件访问。

相关内容