Рейтинг:0

Перенаправить запрос HTTP (или TCP) через NGINX с использованием поддомена на определенный порт

флаг in

Я хочу открыть локальный веб-сервер через удаленный веб-сервер. На удаленном хосте уже есть Nginx и веб-приложение (веб-почта). Удаленный сервер работает как шлюз для локального веб-сервера, который перенаправляет порт 80 на удаленный 8080. Это работает.

Теперь я хочу перенаправить запросы субдоменов (например, bridge.mydomain.co) на перенаправляемый порт. Я пытался использовать это:

сервер {
    слушать 80;
    слушать [::]:80;
    имя_сервера bridge.mydomain.co;

    место расположения / {
        proxy_set_header Хост $host;
        прокси_пароль http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

На локальном веб-сервере запущено сложное приложение PHP, поэтому он жалуется:

40 ошибок типа:

Отказался загружать таблицу стилей '', поскольку она нарушает следующую директиву Content Security Policy: «default-src https: data: 'unsafe-inline' 'unsafe-eval'". Обратите внимание, что 'style-src-elem' не был явно установлен, поэтому 'default-src' используется как запасной вариант.

и 56 из:

Отказался загружать скрипт '', так как он нарушает следующее Директива политики безопасности контента: «default-src https: data: 'unsafe-inline' 'unsafe-eval'". Обратите внимание, что 'script-src-elem' не был явно установлен, поэтому 'default-src' используется как запасной вариант.

Я знаю, что могу открыть перенаправленный порт напрямую, это работает безупречно. Но я хочу использовать (в конечном итоге) nginx для завершения TLS, а затем переадресации.

Читая об этой проблеме, кажется, что локальный веб-сервер в PHP отказывается от запросов. Тем не менее, я не знаю, как это исправить.

Любая помощь?

djdomi avatar
флаг za
Вы уверены, что сервер PHP не запрашивает HTTPS вместо HTTP?
Рейтинг:0
флаг in

Разберитесь в конце. Мне нужно было передать/добавить следующие заголовки:

сервер {
    слушать 80;
    слушать [::]:80;
    имя_сервера bridge.mydomain.co;

    сервер proxy_pass_header;

    место расположения / {
        proxy_set_header Хост $host;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://bridge.mydomain.co http://bridge.mydomain.co:8080 http://bridge.mydomain.co/core/img/favicon-touch.png; img-src 'self' http://bridge.mydomain.co http://bridge.mydomain.co:8080;";
        proxy_pass http://bridge.mydomain.co:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Я считаю, что версия порта не нужна, и отсутствуют некоторые заголовки, которые покрываются «по умолчанию». Так что есть куда совершенствоваться.

Если вы хотите прочитать объяснение здесь, есть некоторые материалы от людей, более осведомленных, чем я: https://stackoverflow.com/questions/33300111/how-to-override-content-security-policy-of-site-a-while-using-nginx-proxy-pass-o

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.