我正在尝试在 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
要重定向来自 / 的所有流量,仅限http://前端/到http://frontend/邮件添加
location = / { return 301 http://frontend/Mail; }
这将有效,因为 nginx 确实
=
在其他位置之前匹配位置。请参阅这里。将所有请求通过 proxy_passhttp://前端/* 将此部分保留到内部 Domino 服务器
location / { proxy_pass http://webmail; }
附加说明:考虑使用 https 来保护网络邮件访问。