squirrelmail/
我需要从用户看到的路径中删除部分。
我的.conf
:
location / {
rewrite /squirrelmail/(.*) /$1 last;
proxy_pass https://internal.domain.tld:8081/squirrelmail/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
}
我希望我的应用程序可供根路径下的用户使用/
,而不是不断添加squirrelmail/
到最终用户路径。
因此,当用户正确访问https://mail.domain.tld
它时,代理会传递实际位于的应用程序,https://internal.domain.tld:8081/squirrelmail/
而无需添加squirrelmail/
到用户路径(例如https://mail.domain.tld/squirrelmail/
)
更新:
如果不重写,用户进入后,应用程序会将部分内容https://mail.domain.tld
添加squirrelmail/
到以下请求中(例如导航到另一个选项卡、打开邮件等),因此对于用户来说现在看起来像,https://mail.domain.tld/squirrelmail/?some=params
但对于应用程序来说现在却https://internal.domain.tld:8081/squirrelmail/squirrelmail/?some=params
导致这种情况HTTP 404
。
6
–
squirrelmail/
路径,它托管在处理此应用程序的另一个 nginx 上internal.domain.tld:8081/squirrelmail
,它还包含其他程序(例如 phpmyadmin 等),因此每个程序都位于其自己的路径中(例如/squirrelmail
,/phpmyadmin
等)。所以我不能只将此应用程序分配给根路径。我需要正确地将 roundcube 应用程序从 proxy_passinternal.domain.tld:8081/squirrelmail
到mail.domain.tld
。–
internal.example.com:8001/squirrelmail
在内部将其作为路径。但在 Roundcube 设置中,您需要将根 URL 设置为mail.example.com
。然后 Roundcube 将为用户生成适当的 URL。–
squirrelmail/
,它甚至没有设置基本路径的设置。–
proxy_set_header X-Forwarded-Path '/';
到您的 nginx 配置中吗?–
|