Рейтинг:0

nginx 4xx при проксировании публичных сайтов

флаг in

Цель: Я хочу создать простой обратный прокси-сервер с nginx, который может принимать любой общедоступный домен в качестве входных данных и выводить тот же веб-сайт, только полностью проксированный, подобно этот сайт.

Проблема: Большинство веб-сайтов возвращают запрещенную или какую-либо другую ошибку 4xx или 5xx. В настоящее время я подозреваю, что это как-то связано с заголовками, особенно с заголовком хоста. Я заметил, что его удаление вызывает ошибку 301 на исходном сайте.

Дорога до сих пор, она же моя полная конфа

site.conf

    сервер {
    слушать 443 ssl http2;
    слушать [::]:443 ssl http2;
    имя_сервера mydomain.com;
    корень /var/www/mydomain.com/public;

    # SSL
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/mydomain.com/chain.pem;

    # безопасность
    включить nginxconfig.io/security.conf;

    # index.php
    индекс index.php;

    # обратный прокси
    место расположения / {
        proxy_pass https://somedomain.com:443;
        включить nginxconfig.io/proxy.conf;
    }

    # дополнительный конфиг
    включить nginxconfig.io/general.conf;
}

безопасность.conf

# заголовки безопасности
add_header X-XSS-Защита "1; режим = блок" всегда;
add_header X-Content-Type-Options «нюхать» всегда;
add_header Referrer-Policy «без реферера при понижении» всегда;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; предки фреймов 'self';" всегда;
add_header Политика разрешений «interest-cohort = ()» всегда;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" всегда;

# . файлы
расположение ~ /\.(?!известно) {
    отрицать все;
}

прокси.conf

прокси_http_версия 1.1;
proxy_cache_bypass $http_upgrade;
proxy_ssl_server_name включено;

# Заголовки прокси
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение $connection_upgrade;
proxy_set_header Хост $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Переадресовано $proxy_add_forwarded;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $ схема;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;

# Таймауты прокси
proxy_connect_timeout 60 с;
proxy_send_timeout 60 с;
proxy_read_timeout 60 с;

и наконец nginx.conf

# favicon.ico
местоположение = /favicon.ico {
    log_not_found выключен;
    доступ_лог выключен;
}

# robots.txt
местоположение = /robots.txt {
    log_not_found выключен;
    доступ_лог выключен;
}

# активы, медиа
местоположение ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg |midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
    истекает 7 дней;
    доступ_лог выключен;
}

# svg, шрифты
расположение ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
    add_header Access-Control-Allow-Origin "*";
    истекает 7 дней;
    доступ_лог выключен;
}

# gzip
gzip включен;
gzip_vary включен;
gzip_proxy любой;
gzip_comp_level 6;
gzip_types текст/обычный текст/текст css/приложение xml/приложение json/приложение javascript/приложение rss+xml/atom+xml image/svg+xml;

Как видите, конфигурация генерируется nginxconfig.io и кажется вполне законной. Любые идеи о том, что может быть не так?

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

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