Цель: Я хочу создать простой обратный прокси-сервер с 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 и кажется вполне законной. Любые идеи о том, что может быть не так?