nginx 作为动态反向代理不起作用

nginx 作为动态反向代理不起作用

我正在尝试使用 nginx 作为反向代理,但使用动态目标 IP/端口,我无法使其正常工作。在这个阶段,我想知道我试图实现的目标是否真的可行。

我想在原始请求中添加远程 IP 地址/主机名和 IP 地址,然后将其用作 proxy_pass,以便 nginx 相应地转发该请求。

如果我将其用作reverse_proxy.conf

server {
    listen 443 ssl;
    server_name server.com;
    location / {
        proxy_pass http://server2.com:8080;
    }
}

它工作正常并且请求https://server.com来自http://server2.com:8080

我想要实现的是动态地执行此操作,以便如果我使用转到此 URL:

https://server.com/?uri=http://server2.com:8080

它将把输入的 URL 作为变量“uri”并执行与上述相同的任务。

这是我尝试过的:

server {
    listen 443 ssl;
    server_name server.com;
    location / {
        proxy_pass $arg_uri;
    }
}

但如果我这样做,我会收到此错误:

2020/05/05 04:12:31 [error] 36608#36608: *2 invalid URL prefix in ""

所以我尝试更改proxy_pass $arg_uri;proxy_pass http://$arg_uri;但只是进入invalid URL prefix in "http://"错误日志

我想要做的事情能完成吗?如果可以,我遗漏了什么?

更新:这是 access.log 中显示的内容

xxx.156.127.xxx - - [07/May/2020:21:28:15 +0100] "GET /?uri=http://server2.com:8080 HTTP/1.1" 500 595 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
xxx.156.127.xxx - - [07/May/2020:21:28:15 +0100] "GET /favicon.ico HTTP/1.1" 500 595 "https://server.com/?uri=http://server2.com:8080" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"

错误日志中

2020/05/07 21:29:52 [error] 38723#38723: *5 invalid port in upstream "http://server2.com:8080", client: xxx.156.127.xxx, server: server.com, request: "GET /?uri=http://server2.com:8080 HTTP/1.1", host: "server.com"
2020/05/07 21:29:52 [error] 38723#38723: *6 invalid URL prefix in "http://", client: xxx.156.127.xxx, server: server.com, request: "GET /favicon.ico HTTP/1.1", host: "server.com", referrer: "https://server.com/?uri=http://server2.com:8080"

相关内容