我尝试清理反向代理 nginx 配置中的 URL。我的配置如下
upstream blog {
ip:port;
}
server {
listen 80;
server_name domain.tdl www.domain.tdl;
rewrite ^/index.html$ / redirect;
rewrite ^(/.+)/index.html$ $1 redirect;
if ($request_uri ~* ".html") {
rewrite (?i)^(.*)/(.*)\.html $1/$2 redirect;
}
location / {
rewrite ^/(.*) /$1 break;
proxy_pass http://blog;
}
}
只要我的博客上游端口是 80,一切就都正常了。但如果我将其更改为其他端口,nginx 就会尝试将我的请求重定向到 domain.tdl:port,这显然行不通。我尝试了许多 proxy_set_header 和 proxy_redirect 的组合,但对我来说都不起作用。
根据要求提供更多详细信息,所有输出来自curl -Lv
:
我将 ip:port 设置为 ip:8000
< HTTP/1.1 301 Moved Permanently
< Location: http://blog:8000/archiv/
我将 proxy_pass 设置为http://blog http://domain.tdl
< HTTP/1.1 301 Moved Permanently
< Location: http://domain.tdl/:8000/archiv/
我设置ip:80
< HTTP/1.1 301 Moved Permanently
< Location: http://domain.tdl/archiv/
有谁知道为什么会发生这种情况或者我该如何解决这个问题?