LINUX.ORG.RU
решено ФорумAdmin

Запутался с nginx. Нужно перенаправлять запросы к субдомену на второй nginx (на локальном IP). Что я делаю не так?

 ,


0

1

Пытаюсь сделать следующую нехитрую штуку. Запросы к domain.tld обрабатывает nginx (nginx #1). Хочу сделать так, чтобы обращение к sub.domain.tld первый nginx перебрасывал на локальный IP (пусть будет 10.0.0.2), на котором живёт второй nginx (nginx #2). Сразу признаюсь, пока-что конфигурировалось методом нашёл@скопипастил. С сетью и подобным не слишком знаком. У nginx #1 в конфиге:

server {
    server_tokens off;
    server_name sub.domain.tld;
    
    if ($scheme != "https") {
        return 301 https://$host$request_uri; # HTTP to HTTPS
    }
    
    listen 443 ssl;
    
    # SSL-параметры убраны

    listen 80;
    
    location / {
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        proxy_pass https://10.0.0.2:443$request_uri;
    }
}

У nginx #2 ничего сверхъестественного, он просто слушает 443 & 80 порты и делает своё.

Проблема: Из браузера при обращении к sub.domain.tld всё хорошо и всё работает. Но через curl ничего не получается с кодом 302, а также приложение, которое должно обращаться к этому субдомену, периодически отваливается с невозможностью найти сервер (хотя через неустановленное время почему-то начинает работать). Уверен, что я что-то сделал криво и неправильно. Надеюсь на помощь.

Также вопрос: Перекидывать на локальный IP по HTTPS - это нормально? Хотелось, чтобы приложение на нём не ругалось из-за того, что, по его мнению, юзается HTTP.

Но через curl ничего не получается с кодом 302,

Команду и выхлоп в студию.

Хотелось, чтобы приложение на нём не ругалось из-за того, что, по его мнению, юзается HTTP.

Это можно решить, погугли proxy_set_header X-Forwarded-Proto $scheme;

goingUp ★★★★★
()
Ответ на: комментарий от goingUp
➜  ~ curl -I https://sub.domain.tld
HTTP/1.1 200 Tunnel established

HTTP/1.1 302 Found
Server: nginx
Date: Thu, 15 Sep 2016 11:40:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.0.10
Set-Cookie: <куки>; path=/; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: <куки>; 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 *
Set-Cookie: <куки>; path=/; httponly;expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax
Set-Cookie: <куки>; path=/; httponly;expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict
Location: http://sub.domain.tld/index.php
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none

curl без -I вообще ничего не возвращает. Попробовал сменить все обращения на HTTP и 80-ый порт, убрал редирект на HTTPS - та же самая картина.

fludardes ★★
() автор топика
Последнее исправление: fludardes (всего исправлений: 1)

Отдельными секциями server пробовал?

server {
    server_tokens off;
    listen 80;
    server_name sub.domain.tld;

    return 301 https://$host$request_uri; # HTTP to HTTPS
}

server {
    server_tokens off;
    server_name sub.domain.tld;

    listen 443 ssl;

    # SSL-параметры

    location / {
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        proxy_pass https://10.0.0.2:443/;
    }
}
i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Сделал отдельными, ничего не изменилось.

fludardes ★★
() автор топика
Ответ на: комментарий от goingUp

Прошу прощения, там Location был https://sub.domain.tld/index.php/login (на него автоматически редиректит то, что сидит на 10.0.0.2) При curl -I на этот Location - ответ 200, всё загружается на отлично. Проблема, видимо, спрятана в приложении, которое обращается, или с жителем 10.0.0.2, а с первым nginx всё в порядке, вероятно.

fludardes ★★
() автор топика
Ответ на: комментарий от fludardes

Location был https://sub.domain.tld/index.php/login
Проблема, видимо, спрятана в приложении,

Это не проблема, приложение скорее всего перенаправляет незалогиненого пользователя на страницу логина.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

Благодарю, буду копать в эту сторону.

fludardes ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.