Eu tenho uma configuração nginx que inclui um cabeçalho CSP que é servido para todas as solicitações. Agora preciso substituí-lo em um local específico (que também é reescrito). Estou pensando algo assim:
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www;
index index.php;
try_files $uri @rewrites;
add_header Content-Security-Policy "default-src 'self' ; script-src 'self' ; style-src 'self' 'unsafe-inline' ; img-src * 'self' data: ; font-src 'self' ; media-src * 'self' ; form-action 'self'";
location @rewrites {
rewrite ^/special/([0-9]*) /special.php?id=$1 last;
rewrite ^/foo/([a-z]+) /foo.php?method=$1 last;
}
location /special {
add_header Content-Security-Policy "default-src 'self' ; script-src 'self' 'unsafe-inline' ; style-src 'self' 'unsafe-inline' ; img-src * 'self' data: ; font-src 'self' ; media-src * 'self' ; form-action 'self'";
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
}
}
No entanto, embora isso defina o cabeçalho em qualquer solicitação que comece com /special
, isso resulta em um 404 porque não continua no local a seguir que mapeia arquivos PHP. Como devo fazer isso?
Tente ver se o seguinte funciona para você:
http
contexto:server
contexto: