Я устанавливаю политику безопасности содержимого для своего сайта, но URL-адрес скрипта для моей системы комментариев содержит номер порта, т.е. http://dev.example.com:8080/client.js
.
У меня есть несколько других URL, которые используют портыи я предпочел бы скрыть, какие порты использует мой сайт в случае возможных последствий для безопасности.
Как я могу скрыть эти URL-адреса, содержащие номера портов, чтобы CSP рассматривал URL-адреса как self
?
Например, вместо http://dev.example.com:8080/client.js
Я бы хотел, чтобы оно было http://dev.example.com/comments/client.js
.
Я на сервере Nginx и пытался переиграть с переписыванием URL, но не могузаставить его работать.
Вот что я попробовал.
Это позволяет мне изменить URL-адрес сценария на http://dev.example.com/comments/client.js
, но CSP по-прежнему обнаруживает http://dev.example.com:8080/client.js
.
location ~ /comments/ {
return 301 http://dev.example.com:8080/client.js;
}
Не работает
location ~ /comments/ {
rewrite ^/comments/(.*) http://dev.example.com:8080/$1 last;
}
Просто чтобы прояснить, я знаю, что могу просто перебросить URL http://dev.example.com:8080/client.js
прямо в CSP, например script-src 'self'
dev.example.com:8080/client.js;
, но я хочу, чтобы URL работал с self
например, script-src 'self'
.
Возвращает 502 bad gateway
Ошибка
location /comments {
proxy_pass http://dev.example.com:8080/;
}
Также возвращает 502 bad gateway
.
location = /comments {
return 301 /comments/;
}
location ~ /comments/(?<ndpath>.*) {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
proxy_pass http://dev.example.com:8080/$ndpath$is_args$args;
gzip on;
gzip_proxied any;
gzip_types *;
}