遵循this post我可以成功地手动加载端口。例如,使用以下nginx.conf:
location /port {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://localhost:5001;
}
字符串
如果我想重定向和端口范围(5001-5228),我必须手动创建位置。为了避免这种情况,我想使用正则表达式方法捕获端口号。我尝试了以下方法:
location ~^/port/(.*)$ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://localhost:$1;
add_header X-debug-message "input: $1" always;
add_header X-debug-message-2 "request_uri: $request_uri" always;
add_header X-uri "uri: $uri" always;
}
型
我从这个实现中得到的响应头是:Content-Type: text/html Server: nginx/1.17.3 X-Debug-Message: input: 5002 X-Debug-Message-2: request_uri: /port/5002 X-Uri: uri: /port/5002
Nginx插件显示:error 4512#4512: \*1 no resolver defined to resolve localhost
在this post之后,我将解析器设置为0.0.0.0、127.0.0.1和/etc/resolv.conf显示的内容,但要么不返回解析器,要么返回*1 localhost could not be resolved (110: Operation timed out)
我还尝试了以下选项内
location ~^/port/(.*)$ /{
...
rewrite /port/(.\*) $1 break;
set $upstream http://localhost:$1;
proxy_pass $upstream;
}
型
返回:Content-Type: text/html Server: nginx/1.17.3 X-Debug-Message: input: 5002 X-Debug-Message-2: request_uri: /port/5002 X-Uri: uri: 5002
Nginx插件显示:error 4638#4638: \*5 invalid URL prefix in ""
如何设置nginx.conf地址块,使带有/port/50 xx的调用将被重定向到带有port的localhost?提前感谢!
1条答案
按热度按时间ego6inou1#
回答我自己的问题。为其他遇到类似问题的人保持开放。我最终使用了以下内容:
字符串
我学到的是通过位置
(?<port>\d+)
分配$port变量,并使用uri创建一个后端字符串。然后代理传递该后端变量。通过将解析器移动到位置块中,解决了解析器问题。