如果 Varnish 被设置为我的 NGINX 后端前面的默认缓存,我如何在 NGINX 后端检查客户端的原始 IP 并据此做出决定?
我只想允许某个目录访问某些 IP。Varnish 在 NGINX 前面,意味着每个请求都来自127.0.0.1
. 我正在考虑设置一些自定义 HTTP 标头,但是如何与location ~ /folder/ {}
部分一起检查呢?
如果 Varnish 被设置为我的 NGINX 后端前面的默认缓存,我如何在 NGINX 后端检查客户端的原始 IP 并据此做出决定?
我只想允许某个目录访问某些 IP。Varnish 在 NGINX 前面,意味着每个请求都来自127.0.0.1
. 我正在考虑设置一些自定义 HTTP 标头,但是如何与location ~ /folder/ {}
部分一起检查呢?
默认情况下,Varnish 4 会将X-Forwarded-For 标头设置为客户端的真实 IP,但 NGINX 会忽略它,除非您明确设置它。
将这些行添加到使用ngx_http_realip_module的 server 块中的 nginx 配置中:
如果您使用 Ubuntu,则默认情况下该模块已启用。但是对于某些 linux 发行版,您可能必须手动启用或安装它。您可以通过以下方式检查配置的模块:
更新配置后不要忘记重新加载 nginx:
一旦 nginx 能够获取 Varnish 设置的客户端真实 IP,您只需在 location 块中放置允许和拒绝选项: