我有一个运行在本地主机上的API。为了允许特定域路径下的外部访问API,我设置了反向代理。这部分工作正常。现在我正在尝试过滤访问并仅允许单个IP连接到API,换句话说,拒绝所有IP连接,除非是特定的IP。
使用以下配置,所有IP都被成功阻止,但它也阻止了我想要允许的那个IP。我已经进行了研究并尝试了几种解决方法,我怀疑我需要获取反向代理下的真实IP,但是还没有成功解决我的问题。非常感谢您的帮助。这是我的nginx配置文件代码:
使用以下配置,所有IP都被成功阻止,但它也阻止了我想要允许的那个IP。我已经进行了研究并尝试了几种解决方法,我怀疑我需要获取反向代理下的真实IP,但是还没有成功解决我的问题。非常感谢您的帮助。这是我的nginx配置文件代码:
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name foo.com www.foo.com;
location / {
allow XX.XX.XX.XX;
#allow 127.0.0.1;
deny all;
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/foo.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/foo.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
我希望允许的IP地址是XX.XX.XX.XX,实际上这是服务器的真实IP。但我认为这没有影响。我也尝试在“location / { }”范围内添加以下内容,但没有成功:
set_real_ip_from XX.XX.XX.XX;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
ufw
来允许或拒绝 IP 地址。或者为了灵活性,修复您的代码以检查数据库中允许的 IP 地址。 - num8ertail -f /var/log/nginx/access.log
,然后在另一个终端或浏览器中尝试进行请求。或者禁用允许拒绝规则,只需添加app.use((req, res, next) => {console.log(req.ip); next();});
并捕获真实的IP地址。 - num8erallow ip-here; deny all;
可以起作用。我认为您可能与X-Forwarded-For
搞混了。 - num8er