Назад | Перейти на главную страницу

Измените параметр http_host fastcgi с помощью nginx

Контекст: у меня есть приложение, работающее в данном домене. Но в некоторых случаях мне нужно запустить его под другим доменом, чем тот, который он ожидает (я также потенциально меняю порт).

Я пытаюсь настроить fastcgi_param 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.

Нашел проблему:

В моей конфигурации nginx много серверной части. Я не упомянул об этом, потому что я думал, что nginx берет последнее, если нет совпадений. Но на самом деле это полная противоположность. Я поставил правую серверную часть первой, и она работает.