我在 nginx Web 服务器上托管了 Web 应用程序。我想禁用任何代理服务器对我的 Web 服务器 (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;
}
}
答案1
您可能会阻止其他一些事情,但这应该有效:
if ($http_x_forwarded_for) {
return 403;
}
您还可以重定向到某些内容来向用户解释其为何不起作用。