我想在用户每次登录时获取IP。我试过了:
my $ip_address = $controller->tx->remote_address;
Run Code Online (Sandbox Code Playgroud)
但它正在获取主机服务器IP。我应该如何得到它?
如果您位于反向代理后面,$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-For和X-Forwarded-Proto标头。”
一旦你这样做了,$c->tx->remote_address就会自动给你这个X-Forwarded-For值,如果你想要你可以使用的原始IP$c->tx->original_remote_address
来源:Mojo 食谱