如何使用 NginX + Next.JS + Apollo GraphQL 获取用户的 IP 地址
Posted
技术标签:
【中文标题】如何使用 NginX + Next.JS + Apollo GraphQL 获取用户的 IP 地址【英文标题】:How can I get user's IP address using NginX + Next.JS + Apollo GraphQL 【发布时间】:2020-11-12 17:04:20 【问题描述】:我正在使用 next.js 应用程序、graphql 服务器和 nginx。
我必须 grep 客户端 IP 地址。
所以在我的 nginx 配置文件中,我添加了
...
location /
proxy_pass http://localhost:3000; # next.js server (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;
location /graphql
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:4000/graphql; # graphql server (4000)
在我的 graphql 中,我添加了
const ip = context.req.header('X-Real-IP')
console.log(ip)
现在我可以很好的获取客户端IP了!
但是,问题是当用户执行 s-s-r(刷新页面)时
ip地址是127.0.0.1 or localhost
即使用户在服务器端渲染,我如何才能获得真实的 IP 地址?
【问题讨论】:
你能分享发出 GQL 请求的代码吗? 【参考方案1】:看起来您的 Next.js 进行了服务器到服务器的调用,因此您获得了 localhost ip。
您需要将在 Next.js 中获得的用户 ip 附加到它向 GQL 服务器发出的请求中。
【讨论】:
是的。我做到了。!以上是关于如何使用 NginX + Next.JS + Apollo GraphQL 获取用户的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
Next JS 不渲染图像 ubuntu 和 nginx 部署
如何修复 axios Next js 中的“错误:请求失败,状态码为 404”