ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: постоянное использование https



Выяснилась любопытная ситуация:

Имеем вот такой конфиг сервера:
        server {
                listen 443 default ssl;
                server_name .test.ru;
                ssl                  on;
                ssl_protocols        SSLv3 TLSv1;
                #ssl_ciphers          
AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
                ssl_ciphers          HIGH;
                ssl_prefer_server_ciphers on;
                ssl_certificate      /etc/nginx/ssl/test.ru.crt;
                ssl_certificate_key  /etc/nginx/ssl/test.ru.key;
                ssl_session_cache    shared:SSL:10m;
                ssl_session_timeout  10m;

                sub_filter_once   off;
                sub_filter 'http://' 'https://';
                
                location / {
                        proxy_buffers 128 64k;
                        proxy_read_timeout    30;
                        proxy_connect_timeout 3;
                        proxy_pass   https://127.0.0.1:9095/;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  
$proxy_add_x_forwarded_for;
                        proxy_set_header   Host             $host;
                }
        }

на порту 9095 слушает томакатовский коннектор с включенным SSL:

<Connector acceptCount="100" connectionTimeout="20000" 
disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" 
maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="9095" 
redirectPort="443" SSLEnabled="true" useBodyEncodingForURI="true" 
proxyPort="443" scheme="https" secure="true" clientAuth="false" 
sslProtocol="TLS" keystorePass="blabla" 
keystoreFile="/home/keys/tomcat-keystore" />

И - ЧТО ВАЖНО - sub_filter работает. Всё как я хочу. Только возникло желание 
выкинуть коннектор в томкате с порта 9095 и использовать коннектор без SSL.

Заменяю proxy_pass на  http://127.0.0.1:8095/ и sub_filter работать перестаёт.

В чём мистика? 




12.06.09, 11:43, "Alex Vorona" <voron@xxxxxxxxxx>:

> 12.06.2009 10:21, umask wrote:
> > Добрый день,
> > 
> > Есть nginx и бэкэнд в виде apache tomcat. Под томкатом работает SSO (single 
> > sign on) приложение (оно коммерческое и изменить его поведение не 
> > представляется возможным).
> > 
> > Нужно чтобы вся работа с этим приложением велась через nginx+SSL.
> > Поддержка SSL на уровне nginx работает отлично. Но вот бэкэнд при первом 
> > заходе пользователя на https://test.ru/ отдаёт:
> > 
> > HTTP/1.1 200 OK
> > Server: nginx/0.7.55
> > Date: Fri, 12 Jun 2009 07:16:06 GMT
> > Content-Type: text/html
> > Connection: keep-alive
> > Keep-Alive: timeout=240
> > ETag: xxxxxxxxxxxxxx
> > Last-Modified: Thu, 16 Apr 2009 16:14:40 GMT
> > Content-Length: 234
> > 
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
> > "http://www.w3.org/TR/html4/loose.dtd";>
> > <html>
> > <head>
> > <DEFANGED_meta http-equiv="refresh" content="0;url=http://test.ru/test/";>
> > </head>
> > 
> > <body>
> > </body>
> > </html>
> > 
> > И браузер следует по незащищённой ссылке.
> > 
> > Соответственно, proxy_redirect не работает. Сделать хак через 
> > ngx_http_sub_module не получилось.
> Замены не происходит?
> > Подскажите, как сделать так, чтобы всегда использовался https независимо от 
> > того, что отдаёт бэкэнд?
> > 
> к браузеру не должны доходить редиректы на http :)
> > К сожалению сделать так, чтобы бэкэнд тоже работал с поддержкой SSL в моём 
> > случае невозможно.
> > 
> > 



 




Copyright © Lexa Software, 1996-2009.