nginx:使用 proxy_pass 附加到代理 URL

nginx:使用 proxy_pass 附加到代理 URL

我正在处理一些遗留问题,必须重新配置托管基于 PHP 的应用程序的服务器。其中一个决定是从 Apache 迁移到 Nginx。

现在该应用程序有两种响应;

/some/path -> HTML templates
/api/some/path -> JSON

该应用程序基于 Laravel。现在,我有两个虚拟主机,my.app.comapi.app.com。我认为一个不错的解决方案是将api.app.com请求代理到,my.app.com/api在请求路径前面加上。所以;

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

我不是 Nginx 配置专家,但我认为应该这样做:

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

这样做的目的是确保尝试从 GET 的人api.app.com/something确实会得到响应,my.app.com/api/something 但这样做是行不通的。我不断收到应用程序的异常,提示在路线中找不到路径。

谁能告诉我这里发生了什么事?

答案1

来自的提示https://serverfault.com/a/586607

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

相关内容