Войдите в сбои Drupal с Nginx и proxy_pass, но работами при доступе к Drupal непосредственно

Вы добавили что IP к Заголовкам Хоста сайтов?

0
задан 1 August 2012 в 05:05
2 ответа

Ваш синтаксис выглядит правильным для доступа к вашему сайту Drupal через http://my.domain.com/ Я сам использую такой же синтаксис для проксирования с Nginx. Я подозреваю, что проблема в другом.

Это может быть проблема с файлами cookie. Убедитесь, что ваша конфигурация Drupal обновлена ​​так, чтобы она считала my.domain.com адресом установки Drupal.

Если проблема не в этом, вы должны прояснить следующее:

  • Когда вы говорите «не удается войти в систему» ", как далеко вы продвинулись и что возвращается на экран?
  • Что вы обнаруживаете в журналах доступа и ошибок, когда не можете войти в систему

Кроме того, используйте инструмент для проверки HTTP-запроса и заголовки ответов, что они в порядке. (Вы можете, например, дважды проверить домены cookie). Мои любимые - "HEAD", "POST" и " GET 'из дистрибутива Perl LWP :: UserAgent. (libwww-perl в некоторых дистрибутивах Linux). Например:

POST -sSe http://my.domain.com/drupal/login/form

ОБНОВЛЕНИЕ Вы разъяснили, что ссылки с домашней страницы открывают внутренние URL-адреса. Убедитесь, что ваши URL-адреса являются относительными или абсолютными URL-адресами на « http://my.domain.com ». Если URL-адреса указывают непосредственно на внутренний сервер, они не будут работать.

1
ответ дан 23 November 2019 в 10:36

I had the same kind of setup running on Fedora 14 using this nginx config:

location / {
    proxy_pass      http://internal-server.example.com:8064;
    proxy_set_header HTTP_USING_HTTPS 1;
    proxy_set_header X_FORWARDED_HOST example.com;
}

Then I upgraded to Fedora 17 and began to see the same behaviour. The username/password was accepted, but I received an error from Drupal telling me I did not have access.

I looked into it by using Firebug and saw this HTTP-header when logging in:

Set-Cookie SESSb13(skipped)706445be1=dg_xv(skipped)ZI; expires=Fri, 21-Sep-2012 21:40:17 GMT; path=/; domain=.internal-server.example.com; HttpOnly

This led me to think there was a problem with the cookie domain.

I am not entirely sure this is caused by running an updated version of Nginx, but adding the following "proxy_set_header" line to the Nginx configuration solved the problem for me:

location / {
    # The next line solved the problem for me:
    proxy_set_header Host $http_host;

    proxy_pass      http://internal-server.example.com:8064;
    proxy_set_header HTTP_USING_HTTPS 1;
    proxy_set_header X_FORWARDED_HOST example.com;
}

So maybe there was a change in the default behaviour of proxy_pass. Anyway, I hope it may help others.

0
ответ дан 23 November 2019 в 10:36

Теги

Похожие вопросы