如何在 Mojolicious 中获取 IP 地址?

and*_*rei 4 perl mojolicious

我想在用户每次登录时获取IP。我试过了:

my $ip_address = $controller->tx->remote_address;
Run Code Online (Sandbox Code Playgroud)

但它正在获取主机服务器IP。我应该如何得到它?

cha*_*son 5

如果您位于反向代理后面,$c->req->headers->header('X-Forwarded-For')将为您提供您正在寻找的内容,但正确的解决方法是“通过设置环境变量告诉您​​的应用程序MOJO_REVERSE_PROXY

或者,如果您使用 Hypnotoad,请通过配置启用代理支持

# myapp.conf
{hypnotoad => {proxy => 1}};
Run Code Online (Sandbox Code Playgroud)

“这使得 Mojolicious 能够自动拾取X-Forwarded-ForX-Forwarded-Proto标头。”

一旦你这样做了,$c->tx->remote_address就会自动给你这个X-Forwarded-For值,如果你想要你可以使用的原始IP$c->tx->original_remote_address

来源:Mojo 食谱