LINUX.ORG.RU

nginx выдает 302, не слушая конфиг

 , ,


0

1

Всем привет! Прошу помочь разобраться в нестандартном(для меня) поведении работы nginx. Вместо ожидаемого проксирования на внутренний ресурс - отдается 302 с ненужной ссылкой.

cat /etc/nginx/sites-enabled/myService:

server {
listen 80;
return 301 https://$host:8443$request_uri;
}

server {
listen 8443 ssl ;
ssl on;
ssl_certificate /etc/letsencrypt/live/dev.mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dev.mydomain.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

На хосте поставлена ubuntu-server 16.04
nginx - 1.10.3-0ubuntu0.16.04.3

Тачка расположена за НАТом, проброс портов выглядит следующим образом:

8080(WAN) -> 80
8443(WAN) -> 8443

С другого хоста выполняю:

$ curl -I http://dev.mydomain.com:8080 (отрабатывает нормально)

HTTP/1.1 301 Moved Permanently
Server: nginx/1.10.3 (Ubuntu)
Date: Fri, 15 Mar 2019 10:12:16 GMT
Content-Type: text/html
Content-Length: 194
Connection: keep-alive
Location: https://dev.mydomain.com:8443/

проблемный запрос, редиректит не туда, куда нужно:

$ curl -I https://dev.mydomain.com:8443

HTTP/1.1 302 Found
Server: nginx/1.10.3 (Ubuntu)
Date: Fri, 15 Mar 2019 10:13:44 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: ocuqio3tm92n=jlnpklj8j2h1aivS10r7d34hpk; path=/; >>HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: oc_sessionPassphrase=s8otAimSz8fPCOLw%2Bfst8pjQWY5S2O40qKZVRT39xospZInp7UxJ0K9X%2Fqp7E8s%2BuEMTgwZjo7lEIWKWwet5%2bsW3Nz2wTaYPJeC1wuy9z2ZZiQwSoYt3eBJBguMovj8%2B; path=/; HttpOnly
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *
Location: http://dev.mydomain.com/login
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Robots-Tag: none
X-Frame-Options: SAMEORIGIN
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none

То есть отдается 302 с адресом без https и без порта: http://dev.mydomain.com/login

В /var/log/nginx/access.log при втором запросе:

192.168.1.1 - - [15/Mar/2019:04:16:36 +0300] «HEAD / HTTP/1.1» 302 0 "-" «curl/7.54.0»

Софтина, слушающая holocost:8080, редиректит на /login. $scheme ей прилетает от нжинкса. Можно принудительно при проксировании указать scheme, если я понял суть проблемы.

tolstoevsky ()
Ответ на: комментарий от tolstoevsky

Софтина, слушающая holocost:8080, редиректит на /login. $scheme ей прилетает от нжинкса. Можно принудительно при проксировании >указать scheme, если я понял суть проблемы.

Ты прав, софтина предательски редиректит х-й пойми куда. В гневе на nginx совсем забыл про работу софтины

seregakhv ()