Нам нужно прокси передать URL-адрес, по которому my.domain.com должен получить drupal.apps.server.com. Мы настроили перезапись и работает нормально.
Затем мы настроили proxypass, и при доступе к my.domain.com мы получаем содержимое, но не можем войти в приложение (страница администратора Drupal). Если вы получаете доступ напрямую через drupal.apps.server.com, мы можем войти в систему и получить доступ к странице администратора.
Пожалуйста, посмотрите нашу конфигурацию:
server {
listen 80;
server_name my.domain.com;
location /{
proxy_pass http://drupal.get apps.server.com/;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Может ли кто-нибудь помочь нам в этом.
Спасибо, Гео
Ваш синтаксис выглядит правильным для доступа к вашему сайту 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-адреса являются относительными или абсолютными.http://my.domain.com'. Если URL-адреса указывают непосредственно на внутренний сервер, они не будут работать.
У меня была такая же установка в Fedora 14 с использованием этой конфигурации nginx:
location / {
proxy_pass http://internal-server.example.com:8064;
proxy_set_header HTTP_USING_HTTPS 1;
proxy_set_header X_FORWARDED_HOST example.com;
}
Затем я обновился до Fedora 17 и начал наблюдать то же поведение. Имя пользователя / пароль были приняты, но я получил сообщение об ошибке от Drupal, что у меня нет доступа.
Я изучил это с помощью Firebug и увидел этот HTTP-заголовок при входе в систему:
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
Это заставило меня подумать, что проблема с доменом cookie.
Я не совсем уверен, что это вызвано запуском обновленной версии Nginx, но добавление следующей строки «proxy_set_header» в конфигурацию Nginx решило проблему для меня:
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;
}
Так что, возможно, было изменение поведения proxy_pass по умолчанию. В любом случае, я надеюсь, что это поможет другим.