патч для отключения заголовков "Connection: keep-alive" (еще раз)

2013-12-09 Пенетрантность Илья Шипицин
Добрый день!

как-то уже писал на эту тему. дошли руки, выкатил патч в продакшен.
идея в том, что отправка заголовка "Connection: keep-alive" в
большинстве случаев не нужна.

абонентская база - сотни тысяч пользователей, сотни миллионов запросов
в месяц. думаю, спустя месяц-два можно будет считать, что все
протестировано во всех возможных ситуациях.


желающие - приглашаются к тестированию.

данное поведение "подсмотрено" у IIS, который по любым метрикам
занимает десятки процентов "рынка":
http://news.netcraft.com/archives/2013/12/06/december-2013-web-server-survey.html
- поэтому есть уверенность, что все обойдется без побочных эффектов


diff --git a/src/http/ngx_http_header_filter_module.c
b/src/http/ngx_http_header_filter_module.c
index 707a813..759186f 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_t *r)
 len += sizeof("Connection: upgrade" CRLF) - 1;

 } else if (r->keepalive) {
+
+if ((r->http_version == NGX_HTTP_VERSION_10) || (clcf->keepalive_header)) {
 len += sizeof("Connection: keep-alive" CRLF) - 1;
+}

 /*
  * MSIE and Opera ignore the "Keep-Alive: timeout=" header.
@@ -556,8 +559,10 @@ ngx_http_header_filter(ngx_http_request_t *r)
  sizeof("Connection: upgrade" CRLF) - 1);

 } else if (r->keepalive) {
-b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF,
+   if ((r->http_version == NGX_HTTP_VERSION_10) ||
(clcf->keepalive_header)) {
+   b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF,
  sizeof("Connection: keep-alive" CRLF) - 1);
+   }

 if (clcf->keepalive_header) {
 b->last = ngx_sprintf(b->last, "Keep-Alive: timeout=%T" CRLF,
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

http browser module — ancient browser

2013-12-09 Пенетрантность ruv
День добрый!

Вопрос такой. Должны ли дериктивы модуля http_browser располагаться в том же
блоке (http, server, location), что и проверка соответствующих переменных? В
документации об этом ни слова.

А то у меня что-то криво работал код if ($ancient_browser) { ... } внутри
location — получалось always true, когда директивы modern_browser и
ancient_browser заданы на уровне server.

--
Ruvim

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245376,245376#msg-245376

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: write $request_body to the log

2013-12-09 Пенетрантность Daniel Podolsky
2013/12/9 Maxim Dounin :
> Сейчас - есть ручка во встроенном перле, $r->has_request_body().
это один из тез трех вариантов, что мне не нравятся...
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория

2013-12-09 Пенетрантность Sergey Budnevitch

On 09.12.2013, at 18:34, mnsold  wrote:

>> Попробуйте подключиться _штатным_ ( из пакетов ) s_client'ом к
> glassfish'у:
>> openssl s_client -debug -connect localhost:8002
> 
> Включил
>> -Djavax.net.debug=ssl
> 
> На данный момент openssl
> # openssl version
> OpenSSL 1.0.1e 11 Feb 2013
> # dpkg -l|grep openssl
> ii  openssl 1.0.1e-2 
> 
> но nginx 1.5.7 использует все равно 0.9.8:

Добавьте
proxy_ssl_protocols SSLv3;

Посмотрите, исчезнет ли проблема.
Проблема, возможно, в том, что nginx с openssl 0.9.8 шлет session ticket,
который вызывает ошибку в реализации SSL в java.

Чтобы убедиться поставьте openssl из 0.9.8 и проверьте s_client c и без 
-no_ticket.
openssl из 1.0.1e у вас тикет не шлет.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: write $request_body to the log

2013-12-09 Пенетрантность Maxim Dounin
Hello!

On Mon, Dec 09, 2013 at 06:04:17PM +0400, Daniel Podolsky wrote:

> 2013/12/9 Maxim Dounin :
> > Тело запроса читается только в том случае, если оно нужно (e.g, мы
> > собрались его передавать на бекенда)
> Это терминологическая путаница. Мне это тело нужно, но передавать я
> его никуда не собираюсь.
> 
> Нет ли какого полезного ключа "прочесть тело, даже если проксирование
> не прописано"? Если нет - нельзя ли его сделать?
> 
> А то сейчас у меня три варианта, и все они плохие.

Сейчас - есть ручка во встроенном перле, $r->has_request_body().

http://nginx.org/ru/docs/http/ngx_http_perl_module.html#methods

-- 
Maxim Dounin
http://nginx.org/

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория

2013-12-09 Пенетрантность mnsold
> Попробуйте подключиться _штатным_ ( из пакетов ) s_client'ом к
glassfish'у:
> openssl s_client -debug -connect localhost:8002

Включил
> -Djavax.net.debug=ssl

На данный момент openssl
# openssl version
OpenSSL 1.0.1e 11 Feb 2013
# dpkg -l|grep openssl
ii  openssl 1.0.1e-2 

но nginx 1.5.7 использует все равно 0.9.8:
# ldd `which nginx`
linux-vdso.so.1 =>  (0x7fffae33d000)
libpthread.so.0 => /lib/libpthread.so.0 (0x7fdd24f6b000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x7fdd24d34000)
libpcre.so.3 => /lib/libpcre.so.3 (0x7fdd24b03000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x7fdd248ac000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x7fdd2450b000)
libz.so.1 => /usr/lib/libz.so.1 (0x7fdd242f3000)
libc.so.6 => /lib/libc.so.6 (0x7fdd23f91000)
/lib64/ld-linux-x86-64.so.2 (0x7fdd25195000)
libdl.so.2 => /lib/libdl.so.2 (0x7fdd23d8d000)

nginx 1.5.4:
# ldd `which /data/nginx-gost/sbin/nginx`
linux-vdso.so.1 =>  (0x7fff695ff000)
libpthread.so.0 => /lib/libpthread.so.0 (0x7ff4330f4000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x7ff432ebd000)
libpcre.so.3 => /lib/libpcre.so.3 (0x7ff432c8c000)
libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
(0x7ff432a2d000)
libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
(0x7ff432649000)
libdl.so.2 => /lib/libdl.so.2 (0x7ff432444000)
libz.so.1 => /usr/lib/libz.so.1 (0x7ff43222d000)
libc.so.6 => /lib/libc.so.6 (0x7ff431ecb000)
/lib64/ld-linux-x86-64.so.2 (0x7ff43331e000)


# openssl s_client -connect localhost:8002 -tlsextdebug
CONNECTED(0003)
depth=0 C = US, ST = California, L = Santa Clara, O = Oracle Corporation, OU
= GlassFish, CN = myhost.domain.local
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = California, L = Santa Clara, O = Oracle Corporation, OU
= GlassFish, CN = myhost.domain.local
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Santa Clara/O=Oracle
Corporation/OU=GlassFish/CN=myhost.domain.local
   i:/C=US/ST=California/L=Santa Clara/O=Oracle
Corporation/OU=GlassFish/CN=myhost.domain.local
---
Server certificate
-BEGIN CERTIFICATE-
MIICsDCCAhmgAwIBAgIEUTCRSzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC
VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRsw
GQYDVQQKExJPcmFjbGUgQ29ycG9yYXRpb24xEjAQBgNVBAsTCUdsYXNzRmlzaDEf
MB0GA1UEAxMWb2N0b3B1cy5sYW4uaWFjLnNwYi5ydTAeFw0xMzAzMDExMTMwMTla
Fw0yMzAyMjcxMTMwMTlaMIGKMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv
cm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExGzAZBgNVBAoTEk9yYWNsZSBDb3Jw
b3JhdGlvbjESMBAGA1UECxMJR2xhc3NGaXNoMR8wHQYDVQQDExZvY3RvcHVzLmxh
bi5pYWMuc3BiLnJ1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHZ0/bGIlY
r12glRa0B8ykVXGuXtzbNr6cqOlQ5ELkyAlW1zwju/JSPxw00zy/elOep/VMFlAg
K7Sp+xQYqueWgF6u+05K1FTZeQSsgVO3fSkwbBiX4ObUVawuZoTW0tUs8t1RLUm6
widfiIsFrEjrbMWJ5xqxMwBzMdQnyggN3wIDAQABoyEwHzAdBgNVHQ4EFgQUPsyT
ixhlk4gfm5ripc8C1E+J8EwwDQYJKoZIhvcNAQEFBQADgYEAAuaaVnxJN4jsxqHT
AAwNyJl0493xApcKnWCFjdugNbCMvv0ez2tYJ4xuQsG0G4rL/zPLATJvQbJM36TO
JGXR4P3S/QIDFYDpy6cpCBqg/2P0c/vwh/mK5U10sWnrbfLUlh5sBCM1jza3/wtX
/Vqm9py36r3NhaX7hF2KKLG1s7A=
-END CERTIFICATE-
subject=/C=US/ST=California/L=Santa Clara/O=Oracle
Corporation/OU=GlassFish/CN=myhost.domain.local
issuer=/C=US/ST=California/L=Santa Clara/O=Oracle
Corporation/OU=GlassFish/CN=myhost.domain.local
---
No client certificate CA names sent
---
SSL handshake has read 1264 bytes and written 478 bytes
---
New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
Server public key is 1024 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol  : TLSv1
Cipher: EDH-RSA-DES-CBC3-SHA
Session-ID:
52A5C7084B96822C644DA72CADECFADD2C8684AFE17E63158BD8EB90819682B1
Session-ID-ctx: 
Master-Key:
ECB9F34696C2F27C330007773E9272D9FE539517AC74FD3E94F5CF105AA77BF2DFFEFEE93BE22066F68D42CB080F289F
Key-Arg   : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1386596104
Timeout   : 300 (sec)
Verify return code: 18 (self signed certificate)
---


Если дедлаю запрос с nginx 1.5.7 (из репозитория), в логах glassfish'а:
[#|2013-12-09T18:27:35.338+0400|INFO|oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=36;_ThreadName=Thread-2;|Using
SSLEngineImpl.|#]

[#|2013-12-09T18:27:35.338+0400|INFO|oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=36;_ThreadName=Thread-2;|http-thread-pool-8002(5),
READ: TLSv1 Handshake, length = 89|#]

[#|2013-12-09T18:27:35.339+0400|INFO|oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=36;_ThreadName=Thread-2;|http-thread-pool-8002(5),
fatal error: 80: problem unwrapping net record
javax.net.ssl

Re: использование ngx http headers module

2013-12-09 Пенетрантность Валентин Бартенев
On Wednesday 04 December 2013 20:42:21 hexiw wrote:
> Здравствуйте, уважаемые форумчане :) Недавно мне понадобилось добавить в
> заголовки ответа нестандартный заголовок, мне удалось нагуглить модуль
> ngx_http_headers_module и, судя по описанию, он меня целиком устраивает. Но
> я не могу понять как его использовать и куда писать, нужные мне, строки.
> Буду благодарен если кто подскажет как вообще работать с модулями nginx и
> конкретно с ngx_http_headers_module.
> 

И чем документация не устроила?
http://nginx.org/ru/docs/http/ngx_http_headers_module.html

--
Валентин Бартенев



___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: write $request_body to the log

2013-12-09 Пенетрантность Daniel Podolsky
2013/12/9 Maxim Dounin :
> Тело запроса читается только в том случае, если оно нужно (e.g, мы
> собрались его передавать на бекенда)
Это терминологическая путаница. Мне это тело нужно, но передавать я
его никуда не собираюсь.

Нет ли какого полезного ключа "прочесть тело, даже если проксирование
не прописано"? Если нет - нельзя ли его сделать?

А то сейчас у меня три варианта, и все они плохие.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория

2013-12-09 Пенетрантность Sergey Budnevitch

On 09.12.2013, at 16:55, mnsold  wrote:



> Подскажите, как локализовать причину.

Попробуйте подключиться _штатным_ ( из пакетов ) s_client'ом к glassfish'у:

openssl s_client -debug -connect localhost:8002

Посмотрите пройдет ли ssl handshake и если не пройдет, то почему.

Посмотрите на glassfish'евский server.log, добавьте, если из лога не будет 
понятна причина,
-Djavax.net.debug=ssl в список параметров для джавы.

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: write $request_body to the log

2013-12-09 Пенетрантность Maxim Dounin
Hello!

On Mon, Dec 09, 2013 at 04:30:14PM +0400, Daniel Podolsky wrote:

> Добрый день!
> 
> В некотором локейшене хочу принять post и записать его в лог.
> Проксировать его мне никуда не надо, просто принять и записать.
> 
> Данных там не много, должны влезать в память.
> 
> Вроде бы, для этой цели должна подойти переменная $request_body.
> 
> Но в документации написано:
> ===
> $request_body: тело запроса
> Значение переменной появляется в location'ах, обрабатываемых
> директивами proxy_pass и fastcgi_pass.
> ===
> 
> По моим наблюдениям - и правда, для локейшенов без проксирования в
> переменной пусто.
> 
> Я чего-то недопонял, или так оно и есть?

Тело запроса читается только в том случае, если оно нужно (e.g, мы 
собрались его передавать на бекенда).  Если не нужно (e.g., при 
возврате статических файлов или ошибок) - оно просто 
отбрасывается, и в этом случае в переменной $request_body будет 
пусто.

-- 
Maxim Dounin
http://nginx.org/

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория

2013-12-09 Пенетрантность mnsold
Есть два сервера nginx к томуже с разными openssl
1. nginx и opensl собрана вручную (opensl нужна для поддержки ГОСТА), вот
эти версии:
nginx/1.5.4+OpenSSL 1.0.1e 11 Feb 2013
2. nginx и opensl установленаая из репозитория дебиана, вот эти версии:
nginx/1.5.7+OpenSSL 0.9.8o 01 Jun 2010(пробовал так же OpenSSL 1.0.1e )

Оба сервера nginx с openssl установлены на одном хосте. В качестве бэкэнда
стоит glassfish 3.1.1. 

При проксировании в связке конфигурации nginx и opensl (собранные вручную)
все нормально проксируется.
При проксировании в связке конфигурации nginx и opensl (установленные из
репозитория) glassfish не проксируется, пишет "502 Bad Gateway".
В логе видно:
2013/12/09 16:45:59 [info] 4630#0: *5 peer closed connection in SSL
handshake while SSL handshaking to upstream, client: 192.168.44.151, server:
localhost, request: "GET /ised HTTP/1.1", upstream:
"https://127.0.0.1:8002/ised";, host: "myhost.lan.iac.spb.ru:8183"

Замечу, что связка в конфигурации nginx и opensl (установленные из
репозитория) прекрасно проксирует https на apache.

Подскажите, как локализовать причину.
Спасибо!


Конфиг понятное дело одинаковый, разниза только в портах на которых он
доступен, сам конфиг:
server {
listen  *:8183 ssl; 
server_name myhost;

ssl_certificate /data/cert-ssl/server.crt;
ssl_certificate_key /data/cert-ssl/server.key;

location / {
proxy_pass  https://localhost:8002;

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$scheme;
}

error_log  /var/log/nginx/error.log debug;
access_log  /var/log/nginx/access.log  main;
}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245360,245360#msg-245360

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

write $request_body to the log

2013-12-09 Пенетрантность Daniel Podolsky
Добрый день!

В некотором локейшене хочу принять post и записать его в лог.
Проксировать его мне никуда не надо, просто принять и записать.

Данных там не много, должны влезать в память.

Вроде бы, для этой цели должна подойти переменная $request_body.

Но в документации написано:
===
$request_body: тело запроса
Значение переменной появляется в location'ах, обрабатываемых
директивами proxy_pass и fastcgi_pass.
===

По моим наблюдениям - и правда, для локейшенов без проксирования в
переменной пусто.

Я чего-то недопонял, или так оно и есть?

Спасибо.

С уважением,
Даниил Подольский.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: listen на всех ип кроме 127/8

2013-12-09 Пенетрантность Nick Knutov

А с linux/openvz совсем вариантов нет? И даже никакого workaround-да,
чтобы попроще, чем переписывать все конфиги?


04.12.2013 11:06, Igor Sysoev пишет:
[...]
>>> А нет ли способа сделать listen на всех ип (как *:80), кроме 127/8 (и,
>>> наверное, IPv6:::1) ?
>>>
>>> Контекст - на разных 127.0.0/24 висят разные бэкенды, и им надо висеть
>>> именно на 80ом порту, а внешний(ие) ип (на которые должен биндится
>>> нгинх) часто меняются (и их количество вообще может быть не известно,
>>> отвечать надо на всех). Хочется делать релоад нгинх без переписывания
>>> кучи конфигов (виртуалхостов - много, очень много).
>>
>> А что за система и ядро? Многие современные,
> 
> [ не Линуксы ]
> 
>> IIUC, позволяют одному слушать на 
>> *:80 и остальным откусывать у него specific:80

-- 
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Настроить HTTP и HTTPS на одном сервере

2013-12-09 Пенетрантность mnsold
Помогла директива
proxy_redirect http://$http_host $scheme://$http_host;

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245346,245351#msg-245351

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Настроить HTTP и HTTPS на одном сервере

2013-12-09 Пенетрантность mnsold
Точно знаю, что поможет директива
proxy_redirect http://$http_host https://$http_host;
Но не знаю, как ее можно применить только если $scheme=https.
В "if ( $scheme = "https" ) ... " не работает, т.к. nginx пишет
"proxy_redirect" directive is not allowed here"

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245346,245349#msg-245349

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Настроить HTTP и HTTPS на одном сервере

2013-12-09 Пенетрантность mnsold
Dmitriy Lyalyuev Wrote:
---
> Добрый день.
> 
> proxy_set_header   X-Forwarded-Proto $scheme;

Пробовал данную директиву и форсировал ее вместо "$scheme" явно прописывал
"https", но не срабатывает.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245346,245348#msg-245348

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Настроить HTTP и HTTPS на одном сервере

2013-12-09 Пенетрантность Dmitriy Lyalyuev

Добрый день.

proxy_set_header   X-Forwarded-Proto $scheme;

09.12.2013 11:24, mnsold пишет:

Основная проблема: по HTTPS перенаправляет на HTTP протокол, вместо HTTPS.
По HTTP все отрабатывает нормально.
Локальный сетевой трафик хочется по HTTP гонять (и проблемы видимо отсюда и
растут), чтобы не нагружать сервер, да и весь локальный трафик между
серверами считаю доверенным.
В качестве бэкэнда стоит апач.

Само перенаправление (без слэша в конце), как оно проиходит.
Тут все нормально:
http://myhost/context -> http://myhost/context/
А вот тут перенаправляет на HTTP, вместо HTTPS
https://myhost/context -> http://myhost/context/
Подскажите, как нужно поправить конфиг, чтобы перенаправлял на HTTPS, при
условии что хочется внутренний трафик гонять по HTTP?

Конфиги:
server {
listen  *:80;
listen  *:443 ssl;
server_name myhost;

ssl_certificate /.../server.crt;
ssl_certificate_key /.../server.key;

ssl_protocols SSLv2 SSLv3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_verify_client off;

include conf.d/test-apache.cfg;

error_log  /var/log/nginx/error.log warn;
access_log  /var/log/nginx/access.log  main;
}

Файл test-apache.cfg
location ^~ / {
 proxy_pass http://localhost:80;

 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_pass отправлять по https то все работает
нормально, например:
в файле test-apache.cfg заменить
proxy_pass http://localhost:80;
на
if ( $scheme = "http" ) {
  proxy_pass http://localhost:80;
}
if ( $scheme = "https" ) {
  proxy_pass https://localhost:443;
}

На стороне апача на данный момент все предельно просто
 Alias /context "/var/www/context"
 
 Options Indexes MultiViews
 AllowOverride None
 Order allow,deny
 Allow from all
 

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245346,245346#msg-245346

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru



--
Dmitriy Lyalyuev
http://lyalyuev.info

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Настроить HTTP и HTTPS на одном сервере

2013-12-09 Пенетрантность mnsold
Основная проблема: по HTTPS перенаправляет на HTTP протокол, вместо HTTPS.
По HTTP все отрабатывает нормально.
Локальный сетевой трафик хочется по HTTP гонять (и проблемы видимо отсюда и
растут), чтобы не нагружать сервер, да и весь локальный трафик между
серверами считаю доверенным.
В качестве бэкэнда стоит апач.

Само перенаправление (без слэша в конце), как оно проиходит.
Тут все нормально:
http://myhost/context -> http://myhost/context/
А вот тут перенаправляет на HTTP, вместо HTTPS
https://myhost/context -> http://myhost/context/
Подскажите, как нужно поправить конфиг, чтобы перенаправлял на HTTPS, при
условии что хочется внутренний трафик гонять по HTTP?

Конфиги:
server {
listen  *:80;
listen  *:443 ssl;
server_name myhost;

ssl_certificate /.../server.crt;
ssl_certificate_key /.../server.key;

ssl_protocols SSLv2 SSLv3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_verify_client off;

include conf.d/test-apache.cfg;

error_log  /var/log/nginx/error.log warn;
access_log  /var/log/nginx/access.log  main;
}

Файл test-apache.cfg
location ^~ / {
proxy_pass http://localhost:80;

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_pass отправлять по https то все работает
нормально, например:
в файле test-apache.cfg заменить
proxy_pass http://localhost:80;
на
   if ( $scheme = "http" ) {
 proxy_pass http://localhost:80;
   }
   if ( $scheme = "https" ) {
 proxy_pass https://localhost:443;
   }

На стороне апача на данный момент все предельно просто
Alias /context "/var/www/context"

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all


Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245346,245346#msg-245346

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru