У меня есть веб-приложение, размещенное на веб-сервере nginx. Я хотел бы отключить запросы от любого прокси-сервера к моему веб-серверу (nginx).
Мне нужно вернуть 403 для тех, кто запрашивает через прокси-сервер.
Есть ли способ проверить, что X-Forwarded-For установлен в запросе, и не разрешил ли этот запрос от nginx?
или каким-либо другим способом добиться этого?
upstream tomcat_srv
{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server
{
listen 443 ssl http2;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
server_name exam.test.com;
ssl_certificate /etc/nginx/ssl/test/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/test/test.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!aNULL:!KRB5:!PSK:!MD5:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;
if ($http_x_forwarded_for) {
return 403;
}
location / {
proxy_pass http://tomcat_srv;
}
}
Возможно, вы блокируете несколько других вещей, но это должно работать:
if ($http_x_forwarded_for) {
return 403;
}
Вы также можете перенаправить на то, что объясняет, почему это не работает для пользователей.