Вопрос или проблема
Я пытался настроить обратный прокси для Alfresco 5.0.d Community через наш обратный прокси Nginx. В настоящее время обратный прокси используется только для обслуживания нашей службы поддержки. Это первый раз, когда я настраиваю обратный прокси, поэтому прошу вас потерпеть. Главная цель этого обратного прокси – обеспечить TLS-шифрование всех наших внутренних веб-приложений для интернета с использованием сертификатов, выданных Let’s Encrypt.
Мне удалось успешно настроить возвратный прокси для Alfresco с http внутри сети на http снаружи, или с http:// x.x.x.x:8080/share на http:// alfresco.companyname.com, и, насколько я могу судить, это работает идеально. Конфигурация серверного блока, которую я использовал для этого:
server {
listen 80;
server_name alfresco.companyname.com;
rewrite ^/$ /share;
location / {
root /share/;
proxy_pass http://x.x.x.x:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Мы не уверены в том, чтобы оставлять сервер на незащищённом соединении, поэтому я пытался включить TLS в этой настройке, но каждый раз после входа в систему я сталкиваюсь с ошибкой.
Серверный блок с включенным SSL:
server {
listen 443 ssl;
server_name alfresco.companyname.com;
ssl on;
ssl_certificate /etc/ssl/certs/alfrescochained.pem;
ssl_certificate_key /etc/ssl/private/alfrescopriv.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_prefer_server_ciphers on;
rewrite ^/$ /share;
location / {
root /share/;
proxy_pass http://x.x.x.x:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Журналы ошибок Alfresco не дают много информации, и я новичок в Nginx (сначала пытался использовать Apache, но столкнулся с множеством проблем). У кого-нибудь есть рекомендации, что можно попробовать?
Это просто предположение. Но возможно, Alfresco выдает небезопасный cookie для входа, который безопасный интерфейс (что вполне справедливо) не возвращает. Поэтому процесс входа просто нарушается.
Если Alfresco это поддерживает, есть заголовок, который обычно используется, чтобы сообщить ему, что клиентское соединение действительно безопасно. Попробуйте:
proxy_set_header X-Forwarded-Proto $scheme;
Я решил проблему. Я заменил http://x.x.x.x:8080 на https://x.x.x.x:8443. Сначала я забыл заменить http на https, но потом я это сделал, и теперь всё работает. Я получал предупреждения о небезопасной странице в Chrome из-за соединения. Я вышел из офиса, и мои куки для входа истекли, а после повторного входа предупреждения исчезли, так что, возможно, это было связано с этим.
Ответ или решение
Чтобы настроить обратный прокси-сервер Nginx для Alfresco с использованием SSL, важно обеспечить правильную конфигурацию и учет всех необходимых заголовков. Поскольку вы уже успешно перенаправили трафик с HTTP на HTTPS, давайте рассмотрим несколько ключевых моментов, которые могут помочь вам в решении возникшей проблемы.
Шаги по настройке Nginx для Alfresco с использованием SSL
-
Обновите конфигурацию SSL: Убедитесь, что ваш сервер Nginx правильно настроен для обработки запросов HTTPS. Ваша конфигурация сервера выглядит правильно, но убедитесь, что порты и сертификаты настроены корректно.
-
Убедитесь, что вы используете правильный адрес для проксирования: Поскольку вы уже установили Alfresco для работы через HTTPS на порту 8443, используйте
https://x.x.x.x:8443
в вашемproxy_pass
. Это предотвратит проблемы с небезопасными соединениями. Ваш блок конфигурации может выглядеть так:server { listen 443 ssl; server_name alfresco.companyname.com; ssl_certificate /etc/ssl/certs/alfrescochained.pem; ssl_certificate_key /etc/ssl/private/alfrescopriv.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_prefer_server_ciphers on; location / { proxy_pass https://x.x.x.x:8443; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; # добавьте этот заголовок } }
-
Проверьте настройки Alfresco: При использовании обратного прокси убедитесь, что в конфигурации Alfresco установлено правильное значение для
server.context
. Это может помочь избежать проблем с неправильным URL для ваших ресурсов. -
Очистка кэша браузера: После внесения изменений в конфигурацию возможно, что ваш браузер будет кэшировать старые cookies или данные сеанса. Попробуйте очистить кэш браузера или использовать режим инкогнито для проверки.
-
Проверка с помощью инструментов разработчика: Используйте инструменты разработчика в Chrome или Firefox для проверки заголовков запроса и ответа. Убедитесь, что заголовок
X-Forwarded-Proto
установлен, как указано выше. -
Логи: Если после всех изменений проблема сохраняется, обязательно проверяйте логи как Nginx, так и Alfresco. Это может дать более ясное представление о том, где происходит сбой.
Выводы
Проблема, с которой вы столкнулись, может быть связана с неправильными HTTP-заголовками, используемыми вашим обратным прокси, или неправильной конфигурацией Alfresco. Настройка X-Forwarded-Proto
может помочь Alfresco правильно обрабатывать шифрование и идентифицировать соединение как защищенное.
Обязательно протестируйте настройки после внесения всех изменений и проверьте, устраняет ли это вашу проблему. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.