Re: Nginx + Android + ssl = 400
Hello! On Wed, Mar 04, 2015 at 10:38:25AM -0500, ingtar wrote: тут то собака и порылась. Я вижу записи в логах правильного конфига, где бы он не был. Т.е. запрос попадает на правильное server_name. Запрос - попадает в нужный server{} на основании заголовка Host HTTP-запроса. При этом если клиент не умеет SNI - _соединение_ будет установлено в рамках сервера по умолчанию, и соответственно настройки SSL будут те, которые указаны в рамках сервера по умолчанию. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
тут то собака и порылась. Я вижу записи в логах правильного конфига, где бы он не был. Т.е. запрос попадает на правильное server_name. Gena Makhomed Wrote: Скорее всего, HTTP-клиент на андроиде не умеет TLS SNI и поэтому его запросы всегда попадают в default_server. -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,257050#msg-257050 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
3 марта 2015 г., 20:30 пользователь ingtar nginx-fo...@nginx.us написал: Тогда я ничего не понимаю :) Можно я вам расскажу свое понимание работы nginx, а вы меня поправите? Может быть у меня фундаментальная дара в знаниях, я такое не отрицаю :) Есть два файла конфигов в директории conf.d example1.conf server { listen *:80; listen *:443 ssl; server_name example1; ssl_certificate 1.crt; ssl_certificate_key 1.key; } example2.conf server { listen *:80; listen *:443 ssl; server_name example2; ssl_certificate 1.crt; ssl_certificate_key 1.key; ssl_client_certificate ca.crt; ssl_verify_client on; } Клиент устанавливает с сайтом example1 соединение. Запрос с хэдером этого сайта приходит на сервер, обслуживающий указанный ИП адрес (Client Helo). Nginx принял запрос, по хедеру сравнил server_name и стал обрабатывать этот запрос по правилам конфига example1 (т.к listen равноправные, приоритет отдается конфигу с правильынм server_name) Сервер отправляет свое Helo с открытым ключем, клиент его проверяет и если все ок - оба договариваются об алгоритмах шифрования и начинается обмен данными. Это если без особых подробностей. Для конфига example2 все тоже самое, только сервер запрашивает сертификат клиента и если его нет - 400 ошибка. В итоге у меня получается два сайта - первый работает без клиентских сертификатов, второй с ними.. и вся эта магия ломается если клиент не передал заголовок Host ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
Вооо! Я могу, указав в каждом из конфигов свои access_log, видеть, каким конфигом чей запрос словился. И я вижу, что запрос от клиента с андройда и сертификатом словился правильным конфигом (т.е. заголовок был отправлен), он упал в нужный лог. Но если конфиг не в топе - то там 400, а если в топе - то 200! Причем еррор лог говорит просто - запрос без сертификата, а если в топе конфиг - то с сертификатом :) Aleksandr Sytar Wrote: --- и вся эта магия ломается если клиент не передал заголовок Host Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,257037#msg-257037 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
On 03.03.2015 19:30, ingtar wrote: Клиент устанавливает с сайтом example1 соединение. Запрос с хэдером этого сайта приходит на сервер, обслуживающий указанный ИП адрес (Client Helo). Nginx принял запрос, по хедеру сравнил server_name и стал обрабатывать этот запрос по правилам конфига example1 (т.к listen равноправные, приоритет отдается конфигу с правильынм server_name) Сервер отправляет свое Helo с открытым ключем, клиент его проверяет и если все ок - оба договариваются об алгоритмах шифрования и начинается обмен данными. listen не равноправные. один из них - default_server. Подробнее: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen http://nginx.org/ru/docs/http/ngx_http_core_module.html#listen Выбор HTTPS-сервера для обработки происходит не по заголовку Host: http://nginx.org/en/docs/http/configuring_https_servers.html http://nginx.org/ru/docs/http/configuring_https_servers.html Если я вас достал глупыми вопросами - извините, я хочу разобраться в проблеме. http://mailman.nginx.org/pipermail/nginx-ru/2015-March/055479.html По поводу своего первоначального вопроса - выставили конфиг первым в списке, что неправильно, но работает :) Скорее всего, HTTP-клиент на андроиде не умеет TLS SNI и поэтому его запросы всегда попадают в default_server. -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
Тогда я ничего не понимаю :) Можно я вам расскажу свое понимание работы nginx, а вы меня поправите? Может быть у меня фундаментальная дара в знаниях, я такое не отрицаю :) Есть два файла конфигов в директории conf.d example1.conf server { listen *:80; listen *:443 ssl; server_name example1; ssl_certificate 1.crt; ssl_certificate_key 1.key; } example2.conf server { listen *:80; listen *:443 ssl; server_name example2; ssl_certificate 1.crt; ssl_certificate_key 1.key; ssl_client_certificate ca.crt; ssl_verify_client on; } Клиент устанавливает с сайтом example1 соединение. Запрос с хэдером этого сайта приходит на сервер, обслуживающий указанный ИП адрес (Client Helo). Nginx принял запрос, по хедеру сравнил server_name и стал обрабатывать этот запрос по правилам конфига example1 (т.к listen равноправные, приоритет отдается конфигу с правильынм server_name) Сервер отправляет свое Helo с открытым ключем, клиент его проверяет и если все ок - оба договариваются об алгоритмах шифрования и начинается обмен данными. Это если без особых подробностей. Для конфига example2 все тоже самое, только сервер запрашивает сертификат клиента и если его нет - 400 ошибка. В итоге у меня получается два сайта - первый работает без клиентских сертификатов, второй с ними.. Если я вас достал глупыми вопросами - извините, я хочу разобраться в проблеме. По поводу своего первоначального вопроса - выставили конфиг первым в списке, что неправильно, но работает :) Илья Шипицин Wrote: --- нельзя настроить только один сайт требует аутентификацию по сертификату этот параметр согласуется в SSL Server Hello. т.е. вы требуете аутентификацию для всех сайтов. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,257035#msg-257035 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
Hello! On Sun, Mar 01, 2015 at 02:43:53AM -0500, ingtar wrote: В общем, ситуация все страннее и страннее. Я скопировал полностью все конфиги с боевого сервера (много доменных имен) - и у меня на тесте все отвалилось! В результате гоняний конфигов туда-сюда выяснил, что если конфиг для exchange стоит ПЕРВЫМ в списке директории - т.е. имеет например имя a.conf то все работает. Судя по всему, вам надо прочитать про то, как вообще работает SSL и как [не] решается проблема нескольких сертификатов на одном сервере. Ибо вы, судя по всему, пытаетесь использовать SNI. Делая это, надо понимать, что: 1) SNI работает далеко не везде, даже не во всех браузерах. Не говоря уже о каких-либо специфических http-клиентах. 2) Если SNI не работает, то будет использован сертификат из сервера по умолчанию. Каковым является первый в конфиге блок server{}, использующий данный listen-сокет (либо может быть задан явно с помощью параметра default_server директивы listen). Подробнее про SNI можно почитать, например, тут: http://nginx.org/ru/docs/http/configuring_https_servers.html#name_based_https_servers А про сервера по умолчанию - тут: http://nginx.org/ru/docs/http/request_processing.html -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
Доброго дня, Максим! Maxim Dounin Wrote: --- Такую штуку я специально не включал, только по незнанию если :) Но поддержка SNI есть, nginx -V ее показывает. Ибо вы, судя по всему, пытаетесь использовать SNI. Делая это, надо понимать, что: 1) SNI работает далеко не везде, даже не во всех браузерах. Не говоря уже о каких-либо специфических http-клиентах. 2) Если SNI не работает, то будет использован сертификат из сервера по умолчанию. Каковым является первый в конфиге блок server{}, использующий данный listen-сокет (либо может быть задан явно с помощью параметра default_server директивы listen). На сервере установлен один wildcard-сертификат, который используется для всех доменных имен. В том числе в конфиге для Exchange. Вторых сертификатов для ssl нет. Соотвесттвенно доменные адреса вида www.example.com, static.example.com, zip.example.com и теперь вот exchange.example.com Только 1 конфиг использует авторизацию клиентов по сертификатам, все остальные это обычные веб-сайты с общим доступом. За ссылки спасибо :) В общем я подозреваю, что клиент Андройда делает один из запросов при установке соединения не по хостнейму, а по ИП адресу (может быть обратную зону проверяет, но не получилось это подтвердить) В результате запрос цепляется правильным конфигом, но вот на тот самый обратный запрос нам отвечает другой конфиг (первый в списке) Самое, что заставляет мой глаз дергаться - на IOS все работает как часы при любой конфигурации. Подробнее про SNI можно почитать, например, тут: http://nginx.org/ru/docs/http/configuring_https_servers.html#name_base d_https_servers А про сервера по умолчанию - тут: http://nginx.org/ru/docs/http/request_processing.html -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256998#msg-256998 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
нельзя настроить только один сайт требует аутентификацию по сертификату этот параметр согласуется в SSL Server Hello. т.е. вы требуете аутентификацию для всех сайтов. можете поиграть с обработчиком ошибки 495 (клиент не предоставил сертификата), в сеть пойдет 400 (в error-логе будет 495), вероятно это ваш случай. насчет pre-flight запросов, в протоколе mapi есть механизм автоопределения, не исключено, что этот запрос пытается выполнить андроид. чудесов не бывает, смотрите логи. там все есть про вашу 400-ю ошибку 2 марта 2015 г., 21:23 пользователь ingtar nginx-fo...@nginx.us написал: Доброго дня, Максим! Maxim Dounin Wrote: --- Такую штуку я специально не включал, только по незнанию если :) Но поддержка SNI есть, nginx -V ее показывает. Ибо вы, судя по всему, пытаетесь использовать SNI. Делая это, надо понимать, что: 1) SNI работает далеко не везде, даже не во всех браузерах. Не говоря уже о каких-либо специфических http-клиентах. 2) Если SNI не работает, то будет использован сертификат из сервера по умолчанию. Каковым является первый в конфиге блок server{}, использующий данный listen-сокет (либо может быть задан явно с помощью параметра default_server директивы listen). На сервере установлен один wildcard-сертификат, который используется для всех доменных имен. В том числе в конфиге для Exchange. Вторых сертификатов для ssl нет. Соотвесттвенно доменные адреса вида www.example.com, static.example.com, zip.example.com и теперь вот exchange.example.com Только 1 конфиг использует авторизацию клиентов по сертификатам, все остальные это обычные веб-сайты с общим доступом. За ссылки спасибо :) В общем я подозреваю, что клиент Андройда делает один из запросов при установке соединения не по хостнейму, а по ИП адресу (может быть обратную зону проверяет, но не получилось это подтвердить) В результате запрос цепляется правильным конфигом, но вот на тот самый обратный запрос нам отвечает другой конфиг (первый в списке) Самое, что заставляет мой глаз дергаться - на IOS все работает как часы при любой конфигурации. Подробнее про SNI можно почитать, например, тут: http://nginx.org/ru/docs/http/configuring_https_servers.html#name_base d_https_servers А про сервера по умолчанию - тут: http://nginx.org/ru/docs/http/request_processing.html -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256998#msg-256998 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Nginx + Android + ssl = 400
Доброго дня! Столкнулся с непонятной проблемой, не могу даже локализовать. Настраиваем на фронте доступ к сайту по ssl сертификатам (Публикуем Exchange и как фронтенд - nginx) Соответственно доступ с мобильных устройств идет на локейшен Microsoft-Server-ActiveSync. Сгенерировали CA, клиенский сертификат и установили его на Андроид и на iPad. На втором работает, на первом дает ошибку 400 - обращение без сертификата. Как смог повторил состав ПО на тестовом фронте - работает и на Андройде. Причем что необычно - запросы от андройда на проблемном фронте падают не в лог для этого локейшена , а в основной лог для этого сайта (падают в exchange.example.com_main_access.log, а не в exchange.example.com_sync_access.log, листинг конфига ниже) Доступ через web - локейшен owa работает без замечаний и корректно на всех устройствах Все указывает на проблему софта, но я теряюсь в догадках, кто может мне помочь. Решил попытать счастья тут:) Если вдруг вы сталкивались с чем-то подобным - помогите, пожалуйста. Версия nginx: nginx version: nginx/1.6.1 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-file-aio --add-module=ngx_devel_kit --add-module=set-misc-nginx-module --add-module=echo-nginx-module --with-http_spdy_module --with-cc-opt='-O2 -g' CentOS release 6.3 openssl-1.0.1e-30.el6_6.5.x86_64 Конфиг nginx для данного сайта: server { listen :80; server_nameexchange.example.com; return 301 https://$server_name$request_uri; } server { server_name exchange.example.com; listen *:443 ssl; ssl on; ssl_certificate /etc/pki/tls/certs/example.com_full.crt; ssl_certificate_key /etc/pki/tls/example.com.key; ssl_protocolsSSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL; ssl_client_certificate /etc/nginx/exchange_ssl/ssl/ca.crt; ssl_verify_client on; keepalive_timeout 70; fastcgi_param SSL_VERIFIED $ssl_client_verify; fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial; fastcgi_param SSL_CLIENT_CERT $ssl_client_cert; fastcgi_param SSL_DN $ssl_client_s_dn; # Set global proxy settings proxy_read_timeout 360; proxy_connect_timeout 360; proxy_pass_header Date; proxy_pass_header Server; proxy_set_headerHost $host; proxy_set_headerX-Real-IP $remote_addr; proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_headerAccept-Encoding ; proxy_buffers 8 32k; proxy_buffer_size 64k; large_client_header_buffers 8 32k; location / { return 301 https://$server_name/owa; proxy_buffer_size 32k; } location ~* ^/owa { proxy_buffer_size 32k; error_log /var/log/nginx/exchange.example.com_owa_error.log ; access_log /var/log/nginx/exchange.example.com_owa_access.log exchange; proxy_pass https://exchange; } location ~* ^/Microsoft-Server-ActiveSync(.*) { proxy_buffer_size 32k; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Url-Scheme $scheme; proxy_set_header X-Real-IP $remote_addr; error_log /var/log/nginx/exchange.example.com_sync_error.log ; access_log /var/log/nginx/exchange.example.com_sync_access.log exchange; proxy_pass https://exchange; } error_log /var/log/nginx/exchange.example.com_main_error.log ; access_log /var/log/nginx/exchange.example.com_main_access.log exchange; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256951#msg-256951 ___ nginx-ru mailing list nginx-ru@nginx.org
Re: Nginx + Android + ssl = 400
Andrey Kopeyko Wrote: --- По-видимому, вы не попадаете в описывающую location регулярку - смотрите в логе куда именно он ломится, и корректируйте regexp. Спасибо, попробую покрутить локейшен. На момент ошибки в логах вот такой запрос: exchange.example.com 111.111.11.111 - u...@example.com [28/Feb/2015:17:36:19 +0300] OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 400 246 - Android/5.0.2-EAS-2.0 - upstream - status:- time: -NONE - - Смущает то, что на iOS все работает и этот же же конфиг на другом сервере тоже работает. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256954#msg-256954 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
28.02.2015 12:10, ingtar пишет: Доброго дня! Столкнулся с непонятной проблемой, не могу даже локализовать. Настраиваем на фронте доступ к сайту по ssl сертификатам (Публикуем Exchange и как фронтенд - nginx) Соответственно доступ с мобильных устройств идет на локейшен Microsoft-Server-ActiveSync. Сгенерировали CA, клиенский сертификат и установили его на Андроид и на iPad. На втором работает, на первом дает ошибку 400 - обращение без сертификата. Как смог повторил состав ПО на тестовом фронте - работает и на Андройде. Причем что необычно - запросы от андройда на проблемном фронте падают не в лог для этого локейшена , а в основной лог для этого сайта (падают в exchange.example.com_main_access.log, а не в exchange.example.com_sync_access.log, листинг конфига ниже) По-видимому, вы не попадаете в описывающую location регулярку - смотрите в логе куда именно он ломится, и корректируйте regexp. ... location ~* ^/Microsoft-Server-ActiveSync(.*) { proxy_buffer_size 32k; -- Best regards, Andrey Kopeyko and...@kopeyko.ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
Все конфиги одинаковые. Но специально сейчас еще раз проверил эту строчку - присутствует Кроме того, строчка из лога с работающего хоста указывает на то, что сертификат передается: SUCCESS ED45D3CD01EDDB07 /C=RU/ST=Moscow/L=Moscow/O=Company/OU=User/CN=u...@example.com/emailAddress=u...@example.com А на неработающем нет. И у меня взрывается мозг :) В формат лога включена информация о передаваемом сертификате - вот строчка из лог формата: log_format exchange '$host $remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for ' 'upstream $upstream_addr status:$upstream_status time: $upstream_response_time' '$ssl_client_verify $ssl_client_serial $ssl_client_s_dn'; Сертификаты так же идентичные (rsync клиенских и корневых) Настройки клиента не меняются. Меняется только адрес обращения Andrey Kopeyko Wrote: --- Предположу, что конфигурация второго вашего nginx отличается отсутствием директивы ssl_verify_client on; Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256962#msg-256962 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
Anton Gorlov Wrote: --- В порядке бреда - возможно во 2 случае по пути шибко умный провайдер с особо умной DPI? Как вариант да, Подтвердить правда будет очень непросто :) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256966#msg-256966 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
В error логах - только такая строчка с debug: 2015/02/28 20:49:35 [info] 20623#0: *178128083 client sent no required SSL certificate while reading client request headers, client: 123.123.123.123, server: exchange.example.com, request: OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1, host: exchange.example.com Ну и соответственно в access exchange.example.com 123.123.123.123 - u...@example.com [28/Feb/2015:20:49:35 +0300] OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 400 246 - Android/5.0.2-EAS-2.0 - upstream - status:- time: - NONE На рабочем хосте - 192.168.1.12 192.168.1.22 - u...@example.com [28/Feb/2015:21:19:01 +0300] OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 200 0 - Android/5.0.2-EAS-2.0 - upstream 192.168.1.253:443 status:200 time: 0.000 SUCCESS ED45D3CD01EDDB07 /C=RU/ST=Moscow/L=Moscow/O=Company/OU=User/CN=u...@example.com/emailAddress=u...@example.com 192.168.1.12 192.168.1.22 - u...@example.com [28/Feb/2015:21:19:02 +0300] POST /Microsoft-Server-ActiveSync?Cmd=FolderSyncUser=user%40example.comDeviceId=android171621781534095DeviceType=Android HTTP/1.1 200 142 - Android/5.0.2-EAS-2.0 - upstream 192.168.1.253:443 status:200 time: 0.300 SUCCESS ED45D3CD01EDDB07 /C=RU/ST=Moscow/L=Moscow/O=Company/OU=User/CN=u...@example.com/emailAddress=u...@example.com nginx собран без опции --with-debug, с ним вывод был бы подробнее? Пересобрать и обновить пока не смогу Собрать такую же инфу по яблокам так же не выйдет - выходной как-никак :) Andrey Kopeyko Wrote: --- 28.02.2015 17:41, ingtar пишет: На момент ошибки в логах вот такой запрос: exchange.example.com 111.111.11.111 - u...@example.com [28/Feb/2015:17:36:19 +0300] OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 400 246 - Android/5.0.2-EAS-2.0 - upstream - status:- time: -NONE - - Смущает то, что на iOS все работает Смотрите, что шлёт яблочный клиент - предположу, что таки другое. И гляньте в error_log - там будут подробности про ошибку. и этот же же конфиг на другом сервере тоже работает. Включите debug на обоих серверах (http://nginx.org/ru/docs/debugging_log.html и http://nginx.org/ru/docs/ngx_core_module.html#debug_connection), сделайте по 1 запросу, и тщательно изучайте\сравнивайте отладочные логи - и разница должна вам открыться. -- Best regards, Andrey Kopeyko and...@kopeyko.ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256958#msg-256958 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
01.03.2015 01:53, ingtar пишет: В порядке бреда - возможно во 2 случае по пути шибко умный провайдер с особо умной DPI? Как вариант да, Подтвердить правда будет очень непросто :) довольно просто - поднять vpn до тестового сервера и проверить оживёт ли или нет. Это раз Второе -подключится напрямую к тестовому серверу/тестовой конфигурации - например по wifi ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
28.02.2015 21:27, ingtar пишет: В error логах - только такая строчка с debug: 2015/02/28 20:49:35 [info] 20623#0: *178128083 client sent no required SSL certificate while reading client request headers, Вы внимательно прочитали строчку выше? Что она вам говорит? Мне она говорит - что надо прекращать копать nginx. Проблема в настройках или в фичах вашего клиента. P.S. Предположу, что конфигурация второго вашего nginx отличается отсутствием директивы ssl_verify_client on; -- Best regards, Andrey Kopeyko and...@kopeyko.ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
28.02.2015 17:41, ingtar пишет: На момент ошибки в логах вот такой запрос: exchange.example.com 111.111.11.111 - u...@example.com [28/Feb/2015:17:36:19 +0300] OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1 400 246 - Android/5.0.2-EAS-2.0 - upstream - status:- time: -NONE - - Смущает то, что на iOS все работает Смотрите, что шлёт яблочный клиент - предположу, что таки другое. И гляньте в error_log - там будут подробности про ошибку. и этот же же конфиг на другом сервере тоже работает. Включите debug на обоих серверах (http://nginx.org/ru/docs/debugging_log.html и http://nginx.org/ru/docs/ngx_core_module.html#debug_connection), сделайте по 1 запросу, и тщательно изучайте\сравнивайте отладочные логи - и разница должна вам открыться. -- Best regards, Andrey Kopeyko and...@kopeyko.ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx + Android + ssl = 400
В общем, ситуация все страннее и страннее. Я скопировал полностью все конфиги с боевого сервера (много доменных имен) - и у меня на тесте все отвалилось! В результате гоняний конфигов туда-сюда выяснил, что если конфиг для exchange стоит ПЕРВЫМ в списке директории - т.е. имеет например имя a.conf то все работает. Хочу еще раз обратить внимание на то, что локейшены подцепляются корректно при любом имени файла, т.е. nginx понимает, к какому серверу идет обращение. И лог правильный. Но такое чувство, что при установке соединения клиент делает некий запрос (может быть без хостнейма в заголовке) и ему отвечает первый конфиг, который nginx прочитает - верхний. Засяду ка я за tcpdump... Andrey Kopeyko Wrote: --- Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,256968#msg-256968 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru