Answers:
请尝试使用反向代理支持。一个示例location
部分将是:
location / {
proxy_pass http://localhost:8080;
proxy_redirect http://localhost:8080/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
本示例将所有对此server
块的请求传递给运行在上的第二台服务器localhost:8080
。这会保留POST
的,并且在遇到问题时也应保留其他请求类型。
问题是外部重定向将永远不会重新发送POST
数据。这已写入HTTP规范(请检查3xx部分)。任何这样做的客户端都违反规范。
如果响应GET或HEAD以外的请求而接收到301/302状态码,除非用户确认,否则用户代理不得自动重定向请求,因为这可能会更改发出请求的条件。
我很确定大多数浏览器都通过简单地将重定向的请求强制为请求来实现此目的GET
。从理论上讲,该规范确实允许浏览器询问用户是否重定向POST
数据,但我不知道当前正在执行的操作。
proxy_set_header
值吗?否则,我猜想远程地址将成为代理服务器的远程地址,但是我通常想要的是客户端的远程地址,对吗?
proxy_redirect
有两个参数。请参阅该文档:nginx.org/en/docs/http/...