Как сделать редирект при переносе https-сайта на другой сервер?

2018-06-01 Thread digger
Есть 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 с клиентским сертификатом

2018-03-20 Thread digger
Оказалось, что на той виртуалке, где не работает, стоит 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 с клиентским сертификатом

2018-03-20 Thread digger
Странная штука... Пытаюсь обращаться к 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 трафика для клиентов с авторизацией по сертификату

2018-03-07 Thread digger
Решил сделать попроще - авторизацию с помощь сертификата на первом сервере
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 трафика для клиентов с авторизацией по сертификату

2018-03-06 Thread digger
На территории клиента за 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

2018-02-27 Thread digger
Огромное спасибо! Действительно, достаточно было запустить 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

2018-02-27 Thread digger
Мне нужно запустить 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 сайта завершающий символ # ?

2018-02-15 Thread digger
Спасибо!

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 сайта завершающий символ # ?

2018-02-15 Thread digger
Подскажите, пожалуйста, как удалить из 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