Poartă: Doresc să construiesc un proxy invers simplu cu nginx care să ia orice domeniu public ca intrare și să producă același site web doar complet proxy, similar cu acest site web.
Problemă: Majoritatea site-urilor web vor returna o eroare interzisă sau o altă eroare 4xx sau 5xx. În prezent, bănuiesc că are ceva de-a face cu anteturile, în special cu antetul gazdei. Am observat că eliminarea acestuia provoacă un 301 pe site-ul original.
Drumul de până acum, alias conf. mea completă
site.conf
Server {
asculta 443 ssl http2;
asculta [::]:443 ssl http2;
nume_server domeniul meu.com;
root /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;
# Securitate
includ nginxconfig.io/security.conf;
# index.php
index index.php;
# proxy invers
Locație / {
proxy_pass https://somedomain.com:443;
includ nginxconfig.io/proxy.conf;
}
# configurație suplimentară
includ nginxconfig.io/general.conf;
}
securitate.conf
# anteturi de securitate
add_header X-XSS-Protection „1; mod=bloc” întotdeauna;
add_header X-Content-Type-Options „nosniff” întotdeauna;
add_header Politica de referință „no-referrer-when-downgrade” întotdeauna;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" mereu;
add_header Permisiuni-Politica „interest-cohort=()” întotdeauna;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" întotdeauna;
# . fișiere
locație ~ /\.(?!cunoscut) {
nega totul;
}
proxy.conf
proxy_http_versiunea 1.1;
proxy_cache_bypass $http_upgrade;
proxy_ssl_server_name activat;
# Antete proxy
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune $connection_upgrade;
proxy_set_header Gazdă $gazdă;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header Redirecționat $proxy_add_forwarded;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;
proxy_set_header X-Forwarded-Host $gazdă;
proxy_set_header X-Forwarded-Port $server_port;
# Timeouts proxy
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
și, în sfârșit nginx.conf
# favicon.ico
locație = /favicon.ico {
log_not_found off;
access_log off;
}
# robots.txt
locație = /robots.txt {
log_not_found off;
access_log off;
}
# active, mass-media
locație ~* \.(?: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)$ {
expiră 7d;
access_log off;
}
# svg, fonturi
locație ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Acces-Control-Permite-Origine „*”;
expiră 7d;
access_log off;
}
# gzip
gzip on;
gzip_vary on;
gzip_proxied orice;
gzip_comp_level 6;
gzip_types text/text simplu/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
După cum puteți vedea, configurația este generată de nginxconfig.io și pare destul de legitimă. Aveți idei despre ce ar putea fi în neregulă?