Задать вопрос
@druoleg
DevOps'твующий

Как настроить SSL для связки nginx (front-end) с tomcat 7 (back-end)?

Собственно сабж.
Tomcat server.xml:
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               redirectPort="8443" proxyPort="443"/>


Nginx:
server {
   server_name  site.domain.ru;
   listen       443;


   ssl on;
   ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
   ssl_certificate_key /etc/ssl/private/private.key;

   # You can configure to some "sub-url" (ex.: /youtrack/) instead of domain (or sub-domain)
   location / {
       proxy_pass        http://127.0.0.1:8080;
       proxy_set_header  Host             $http_host;
       proxy_set_header  X-Real-IP        $remote_addr;
       proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
       proxy_set_header  X-Forwarded-Proto  http;
   }
}


Получаю:
400 Bad Request

The plain HTTP request was sent to HTTPS port
nginx/1.4.6 (Ubuntu)
  • Вопрос задан
  • 5241 просмотр
Подписаться 5 Оценить 1 комментарий
Решения вопроса 1
@bobzer
Java EE Developer
Я правильно понимаю, что в топологии ваших серверов Nginx "смотрит в мир", а доступ к Tomcat-у(-ам) извне не предполагается? Т.е., стандартный подход: снаружи балансировщик, внутри сервера приложений на которые балансировщик перенаправляет запросы? В таких случаях Tomcat-ы должны быть закрыты полностью от любого доступа извне на уровне сети/прокси, т.е. они находятся в так называемой "демилитаризованной зоне" и не требуют защиты на уровне протокола обмена данными (HTTPS). Более того, обычно балансировщик при приеме соединения по HTTPS "раздевает" его, расшифровывает, и не имеет средств для повторного шифрования, да это и не нужно. Обычно, балансировщик, получивший данные по HTTPS-соединению передает их дальше на бакенды по протоколу AJP, который предназначен как раз для общения балансировщика с бакендами, т.к. по сравнению с обычным HTTP имеет средства для пинга доступности узлов на бакенде. Таким образом, в вашей конфигурации Nginx должны быть что-то вроде:
proxy_pass        http://127.0.0.1:8009; #8009 - default AJP port on Tomcat
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
proxyPort="443"
укажите 8080
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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