Как сделать редирект при переносе https-сайта на другой сервер?
Есть https-сайт, конфигурация nginx которого создана с помощью ISPmanager. Нужно настроить редирект на другой физический сервер, где находится новая версия этого сайта. Редирект нужен для "бесшовного" переезда, чтобы не дожидаться смены IP в записи A сервера DNS. Пре переезде http-сайта делал такую вставку: server { listen 111.111.111.111:80; server_name k-test.ru www.k-test.ru; location / { proxy_pass http://000.000.000.000:80; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } } Подскажите, пожалуйста, можно ли сделать при помощи nginx аналогичный редирект для https-сайта? Спасибо! Posted at Nginx Forum: https://forum.nginx.org/read.php?21,280013,280013#msg-280013 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Непонятная ошибка при авторизации из скрипта Perl с клиентским сертификатом
Оказалось, что на той виртуалке, где не работает, стоит Net::SSLeay версии 1.8, и он действительно отвергает сертификат. Почему-то условия проверки не выполняются: if (Net::SSLeay::CTX_use_certificate_chain_file($ctx,$f)) { $havecert = 'PEM'; } elsif (Net::SSLeay::CTX_use_certificate_file($ctx,$f,FILETYPE_ASN1)) { $havecert = 'DER'; Такая ошибка: $havecert or return IO::Socket::SSL->error( "Failed to load certificate from file (no PEM, DER or PKCS12)"); Цепочка сертификатов не используется, но есть ca.crt. Может его нужно добавить в цепочку? А там, где работает, стоит Net::SSLeay версии 1.65. Сертификаты ровно те же самые, скопированные файлзиллой. Сейчас попробуем сделать даунгрейд Net::SSLeay до версии 1.65. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279117,279121#msg-279121 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Непонятная ошибка при авторизации из скрипта Perl с клиентским сертификатом
Странная штука... Пытаюсь обращаться к nginx с клиентским сертификатом из perl 5.24.1, получаю ошибку 500 и непонятные сообщения в логах. А в перле 5.20.2 все нормально. Скрипт и сертификаты те же самые openssl version OpenSSL 1.0.1t 3 May 2016 Подскажите, пожалуйста, в чем может быть причина ошибки? В логах nginx при попытке обращения вижу это: 2018/03/20 11:00:44 [debug] 875#0: post event 01430260 2018/03/20 11:00:44 [debug] 875#0: delete posted event 01430260 2018/03/20 11:00:44 [debug] 875#0: accept on **.**.**.**:8444, ready: 0 2018/03/20 11:00:44 [debug] 875#0: posix_memalign: 01400A40:256 @16 2018/03/20 11:00:44 [debug] 875#0: *156 accept: **.**.**.** fd:5 2018/03/20 11:00:44 [debug] 875#0: posix_memalign: 013D6C50:256 @16 2018/03/20 11:00:44 [debug] 875#0: *156 event timer add: 5: 6:1521532904197 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 1 2018/03/20 11:00:44 [debug] 875#0: *156 epoll add event: fd:5 op:1 ev:80002001 2018/03/20 11:00:44 [debug] 875#0: *156 post event 01430670 2018/03/20 11:00:44 [debug] 875#0: *156 delete posted event 01430670 2018/03/20 11:00:44 [debug] 875#0: *156 http check ssl handshake 2018/03/20 11:00:44 [debug] 875#0: *156 http recv(): 1 2018/03/20 11:00:44 [debug] 875#0: *156 https ssl handshake: 0x16 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_do_handshake: -1 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_get_error: 2 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 0 2018/03/20 11:00:44 [debug] 875#0: *156 post event 01430670 2018/03/20 11:00:44 [debug] 875#0: *156 delete posted event 01430670 2018/03/20 11:00:44 [debug] 875#0: *156 SSL handshake handler: 0 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_do_handshake: 1 2018/03/20 11:00:44 [debug] 875#0: *156 SSL: TLSv1.2, cipher: "ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1" 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 1 2018/03/20 11:00:44 [debug] 875#0: *156 http wait request handler 2018/03/20 11:00:44 [debug] 875#0: *156 malloc: 01405CF0:1024 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_read: -1 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_get_error: 2 2018/03/20 11:00:44 [debug] 875#0: *156 free: 01405CF0 2018/03/20 11:00:44 [debug] 875#0: *156 post event 01430670 2018/03/20 11:00:44 [debug] 875#0: *156 delete posted event 01430670 2018/03/20 11:00:44 [debug] 875#0: *156 http wait request handler 2018/03/20 11:00:44 [debug] 875#0: *156 malloc: 01405CF0:1024 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_read: 0 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_get_error: 5 2018/03/20 11:00:44 [debug] 875#0: *156 peer shutdown SSL cleanly 2018/03/20 11:00:44 [info] 875#0: *156 client closed connection while waiting for request, client: **.**.**.**, server: **.**.**.**:8444 2018/03/20 11:00:44 [debug] 875#0: *156 close http connection: 5 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_shutdown: 1 2018/03/20 11:00:44 [debug] 875#0: *156 event timer del: 5: 1521532904197 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 0 2018/03/20 11:00:44 [debug] 875#0: *156 free: 01405CF0 2018/03/20 11:00:44 [debug] 875#0: *156 free: 01400A40, unused: 0 2018/03/20 11:00:44 [debug] 875#0: *156 free: 013D6C50, unused: 56 Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279117,279117#msg-279117 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Проксирование SSL трафика для клиентов с авторизацией по сертификату
Решил сделать попроще - авторизацию с помощь сертификата на первом сервере nginx, а дальше уже без SSL, но по закрытому каналу VPN. Так работает. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278948,278958#msg-278958 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Проксирование SSL трафика для клиентов с авторизацией по сертификату
На территории клиента за NAT стоит http-сервер с адресом из локальной сети. Я делаю к нему доступ с сервера в датацентре с помощью nginx и OpenVPN. При этом клиент, написанный на Perl, использует авторизацию по сертификату. Цепочка серверов выглядит так: [Сервер в датацентре] -> [ Сервер OpenVPN и nginx в датацентре] -> [NAT]->[сервер nginx у клиента]->[сервер http у клиента] Все это задумано для того, чтобы перловые скрипты, работающие на сайте в датацентре, могли обращаться к серверу http, который стоит в офисе клиента. Этот http сервер имеет серый IP из локальной сети клиента. Без авторизации все прекрасно работает. Также нет проблем, когда скрипт Perl с авторизацией по сертификату запускается на сервере nginx у клиента, обращаясь по адресу, выданному OpenVPN. Однако у меня не получается настроить nginx в датацентре таким образом, чтобы я мог запускать скрипт с авторизацией по сертификату на сервере в датацентре. При этом запросы должны проходить через два сервера nginx - вначале они попадают по белому адресу на сервер nginx а датацентре, затем уже по адресу OpenVPN попадают на nginx в фоисе клиента, и уже потом - на сервер http в офисе клиента. Подскажите, пожалуйста, как настроить первый из этих серверов nginx, расположенный в датацентре по белому адресу IP, чтобы он мог проксировать (или делать редирект?) на второй сервер nginx запросы из скрипта Perl с авторизацией по сертификату? Спасибо! Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278948,278948#msg-278948 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Как запустить nginx на IP, которое выделяется через OpenVPN
Огромное спасибо! Действительно, достаточно было запустить nginx на всех интерфейсах, и все получилось как надо. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278789,278808#msg-278808 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Как запустить nginx на IP, которое выделяется через OpenVPN
Мне нужно запустить nginx на адресе IP, который выделяется клиентом OpenVPN. Проблема в том, что этот адрес появляется не сразу после загрузки хоста, а через некоторое время. Соответственно, nginx видит, что адреса IP, прописанного в конфиге, нет, и не запускается. Руками потом запустить можно, но должно запускаться автоматически сразу, как только IP будет доступен. Подскажите, пожалуйста, как лучше организовать такой запуск? Если через crontab, то как проверять, что nginx запущен, и как его запустить, если он не работает? Спасибо! Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278789,278789#msg-278789 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Как удалить из URL сайта завершающий символ # ?
Спасибо! Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278596,278602#msg-278602 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Как удалить из URL сайта завершающий символ # ?
Подскажите, пожалуйста, как удалить из URL сайта завершающий символ решетки #. Точка успешно удаляется следующией конструкцией: if ($http_host ~ "\.$" ){ rewrite ^(.*) $scheme://$host$1 permanent; } Попытка удалить символ # успехом не увенчалась: if ($http_host ~ "\#$" ){ rewrite ^(.*) $scheme://$host$1 permanent; } Так тоже не сработало: if ($http_host ~ "#$" ){ rewrite ^(.*) $scheme://$host$1 permanent; } Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278596,278596#msg-278596 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru