使用 nginx 更改 http_host fastcgi 参数

使用 nginx 更改 http_host fastcgi 参数

上下文:我有一个在给定域下运行的应用程序。但在某些情况下,我需要在它期望的域之外的另一个域下运行它(我也可能会更改端口)。

我正在尝试自定义 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;
}

存在很多问题:

  1. HTTP_HOST 中未指定端口,有没有办法只设置主机?(也许设置一个用于定义参数的变量)
  2. 这根本不起作用,最终“my-app.com”没有被传输;为什么?

注意:这是基于 nginx docker 镜像。

答案1

发现问题:

我的 nginx 配置中有许多服务器部分。我没有提到它,因为我认为 nginx 如果不​​匹配会采用最后一个。但事实恰恰相反。我将正确的服务器部分作为第一个,它正在运行。

相关内容