【问题标题】:How to get IP address in Mojolicious?如何在 Mojolicious 中获取 IP 地址?
【发布时间】:2020-08-28 00:12:27
【问题描述】:

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

my $ip_address = $controller->tx->remote_address;

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

【问题讨论】:

  • 在您提出的另一个关于此问题现已结束的问题中,您提出了Mojolicious::Plugin::ClientIP... 没有成功吗?
  • 不,没有成功
  • @andrei -- 查看ticket 是否适用于您的情况
  • Mojolicious::Plugin::RemoteAddr 可以解决您的问题吗?

标签: perl mojolicious


【解决方案1】:

如果您使用反向代理 $c->req->headers->header('X-Forwarded-For') 会为您提供所需的内容,但正确的解决方法是“通过设置环境变量 MOJO_REVERSE_PROXY 告诉您的应用程序”

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

# myapp.conf
{hypnotoad => {proxy => 1}};

“这允许 Mojolicious 自动获取 X-Forwarded-ForX-Forwarded-Proto 标头。”

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

来源:Mojo Cookbook

【讨论】:

  • 谢谢,我正在使用morbo 进行测试并且需要一些标题,所以:my $headers = $c->req->headers->to_hash; my ($remote_addr,$proxy_addr) = split(/,/, $headers->{'X-Forwarded-For'}) ; $log->debug('in index remote address is ' . $remote_addr );
猜你喜欢
  • 2010-12-26
  • 2014-08-07
  • 2013-01-09
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
相关资源
最近更新 更多