Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev ][Date Next ][Thread Prev ][Thread Next ][Date Index ][Thread Index ]
Re: proxy_pass + https
On Sun, 18 Dec 2005, Andrew Sitnikov wrote:
версия nginx 0.3.16
location ^~ /aaa/bbb {
proxy_pass https://host:443 ;
...
}
ответ от сервера такой:
400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx/0.3.16
Это ответа бэкенда или фронтенда ?
если в proxy_pass не ставить порт то запрос идет на 80 порт
Прилагаемый патч решает две проблемы
1) по умолчанию используется 443 порт.
2) корректно меняется редирект.
Игорь Сысоев
http://sysoev.ru --- src/http/modules/ngx_http_proxy_module.c Wed Dec 7 22:11:17 2005
+++ src/http/modules/ngx_http_proxy_module.c Sun Dec 18 16:44:46 2005
@@ -1926,6 +1926,7 @@
size_t add;
ngx_str_t *value, *url;
+ ngx_uint_t port;
ngx_inet_upstream_t inet_upstream;
ngx_http_core_loc_conf_t *clcf;
#if (NGX_HTTP_SSL)
@@ -1945,12 +1946,14 @@
if (ngx_strncasecmp(url->data, "http://" ;, 7) == 0) {
add = 7;
+ port = 80;
} else if (ngx_strncasecmp(url->data, "https://" ;, 8) == 0) {
#if (NGX_HTTP_SSL)
add = 8;
+ port = 443;
plcf->upstream.ssl = ngx_pcalloc(cf->pool, sizeof(ngx_ssl_t));
if (plcf->upstream.ssl == NULL) {
@@ -2019,7 +2022,7 @@
inet_upstream.name = *url;
inet_upstream.url.len = url->len - add;
inet_upstream.url.data = url->data + add;
- inet_upstream.default_port_value = 80;
+ inet_upstream.default_port_value = port;
inet_upstream.uri_part = 1;
plcf->peers = ngx_inet_upstream_parse(cf, &inet_upstream);
@@ -2032,8 +2035,8 @@
plcf->upstream.uri = inet_upstream.uri;
}
- plcf->upstream.schema.len = sizeof("http://" ;) - 1;
- plcf->upstream.schema.data = (u_char *) "http://" ;;
+ plcf->upstream.schema.len = add;
+ plcf->upstream.schema.data = url->data;
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);