上下文:我有一个在给定域下运行的应用程序。但在某些情况下,我需要在它期望的域之外的另一个域下运行它(我也可能会更改端口)。
我正在尝试自定义 fastcgi_param HTTP_HOST,但应用程序仍然收到“真实的”HTTP_HOST。
以下是我尝试的配置:
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass php:9000;
fastcgi_index app.php;
fastcgi_param SCRIPT_FILENAME /app/web$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SERVER_NAME my-app.com;
fastcgi_param HTTP_HOST my-app.com;
}
存在很多问题:
- HTTP_HOST 中未指定端口,有没有办法只设置主机?(也许设置一个用于定义参数的变量)
- 这根本不起作用,最终“my-app.com”没有被传输;为什么?
注意:这是基于 nginx docker 镜像。
答案1
发现问题:
我的 nginx 配置中有许多服务器部分。我没有提到它,因为我认为 nginx 如果不匹配会采用最后一个。但事实恰恰相反。我将正确的服务器部分作为第一个,它正在运行。