我正在处理一些遗留问题,必须重新配置托管基于 PHP 的应用程序的服务器。其中一个决定是从 Apache 迁移到 Nginx。
现在该应用程序有两种响应;
/some/path -> HTML templates
/api/some/path -> JSON
该应用程序基于 Laravel。现在,我有两个虚拟主机,my.app.com
和api.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;
}