arb*_*les 15 nginx port varnish redirection
我目前有 nginx 设置来通过 Varnish 提供内容。Nginx 监听 8000 端口,varnish 将用户的请求从 80 连接到 8000。
问题是,在某些情况下,尤其是在尝试访问目录时,例如site.com/2010
nginx 将请求重定向到site.com:8000/2010/
.
我怎样才能防止这种情况?
Lux*_*ian 15
我的情况 nginx 侦听80
docker 容器内的端口,但它映射到8080
容器外的端口(或任何随机端口)。中间没有反向代理可以为端口添加适当的标头,也不想在 nginx 配置中对其进行硬编码。
错误重定向示例:
http://localhost:8080/directory -> http://localhost/directory/
我试过:
server {
# ...
port_in_redirect off;
server_name_in_redirect off;
# ...
}
Run Code Online (Sandbox Code Playgroud)
但是没有用。唯一有效的是:
server {
# ...
absolute_redirect off;
# ...
}
Run Code Online (Sandbox Code Playgroud)
手动输入absolute_redirect
说:
如果禁用,由 nginx 发出的重定向将是相对的。
我发现这更灵活,并且不需要您在任何地方硬编码服务器名称和端口。
如果您担心使用相对 URL 进行重定向,请查看此评论。
arb*_*les 14
我通过更仔细地阅读HttpCoreModule 文档找到了这个问题的答案。
port_in_redirect off;
这会保留客户端在重定向期间使用的端口。密切相关的是server_name_in_redirect
它使用第一个主机名进行重定向。因为我不希望 sitename.v.myserver.com 重定向到 sitename.com,