nginx.conf中的正确代理路径

nginx.conf中的正确代理路径,nginx,Nginx,我们有两台服务器,A和B。服务器A可以在全球范围内访问。他安装了nginx。这就是我在conf中看到的: location /test { proxy_pass http://localserver.com; } 它应该做的是将addrees(即服务器A)转换为内部服务器地址。但是,它确实附加了位置路径,即要查找的itries,这根本不可用。如何使代理传递到正确的地址,并将位置中的最后一部分丢弃?尝试按此处指定添加: 试着重写 location /test { rewrite ^

我们有两台服务器,A和B。服务器A可以在全球范围内访问。他安装了nginx。这就是我在conf中看到的:

location /test {
  proxy_pass http://localserver.com;
}

它应该做的是将addrees(即服务器A)转换为内部服务器地址。但是,它确实附加了位置路径,即要查找的itries,这根本不可用。如何使代理传递到正确的地址,并将位置中的最后一部分丢弃?

尝试按此处指定添加:

试着重写

location /test {
    rewrite ^ $scheme://$host/;
    proxy_pass http://localserver.com;
}
一些有用的链接


那应该行得通。Nginx应该剥离上游本地服务器上的“/test”路径。所以我可以说这不是原因。要使其更好,请尝试以下方法:

location /test/ {
  proxy_pass http://localserver.com/;
}
例如,我在前两行添加的两个斜杠将避免错误匹配“/testABC”,并向上游本地服务器发送错误的请求

你有电话吗

proxy_redirect
同一位置块中的行?如果您的上游本地服务器有重定向,那么该行上的错误将导致您描述的问题

[UPDATE]找到了原始配置不起作用而我的配置起作用的根本原因:如果proxy\u pass指令本身没有URI路径,nginx不会替换URI路径部分。因此,我在末尾添加斜杠(斜杠被视为URI路径)的修复触发了URI路径替换

参考:

如果必须以未处理的形式传输URI,则应使用不带URI部分的指令proxy_pass

location  /some/path/ {
  proxy_pass   http://127.0.0.1;
}

这里的解决方案是在URI
proxy\u过程的末尾添加反斜杠(根路径)http://127.0.0.1/
nginx不会在末尾添加传入路径吗?
location  /some/path/ {
  proxy_pass   http://127.0.0.1;
}