Zimbra 的 Nginx 重写规则

Zimbra 的 Nginx 重写规则

我正在尝试为 Zimbra 编写一条重写规则,这将允许我使用主机名而不是 IP 地址和端口来访问 Zimbra 桌面 Web UI。

默认的 Zimbra URL 如下:

http://127.0.0.1:port/?at=long-encrypted-user-id
http://127.0.0.1:port/zimbra/?at=long-encrypted-user-id
http://127.0.0.1:port/desktop/login.jsp?at=long-encrypted-user-id

以下是我目前所拥有的:

server {
    server_name hostname;
    location / {
            proxy_redirect                   off;
            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_pass                       http://127.0.0.1:port/;
    }
}

这只会在后台替换http://hostnamehttp://127.0.0.1:port我遇到的问题是如何将添加?at=long-encrypted-user-id到 URL 中。有人能帮忙吗?

答案1

好的,如果将来有人需要这个,我只需要添加一个 if 和一个重写:

if ($args !~* at=long\-encrypted\-user\-id) {
    rewrite ^/(.*)$ /$1?at=long-encrypted-user-id last;
}

最终的服务器块变为

server {
    server_name hostname;
    location / {
        proxy_redirect                   off;
        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_pass                       http://127.0.0.1:port/;
        if ($args !~* at=long\-encrypted\-user\-id) {
            rewrite ^/(.*)$ /$1?at=long-encrypted-user-id last;
        }
    }
}

Nginx 警告不要使用if假如邪恶),但如果您添加last重写则不行。

相关内容