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

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

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

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

server {
    listen 80;
    listen [::]:80;
    server_name bridge.mydomain.co;

    location / {
        proxy_set_header Host $host;
        proxy_pass 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 ошибок типа:

Отказано в загрузке таблицы стилей '', поскольку она нарушает следующую директиву политики безопасности контента: "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 отклоняет запросы. Но я не знаю, как это исправить.

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

решение1

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

server {
    listen 80;
    listen [::]:80;
    server_name bridge.mydomain.co;

    proxy_pass_header server;

    location / {
        proxy_set_header Host $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;
    }

}

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

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

Связанный контент