从Vapor 2.0中的请求对象获取IP地址?

时间:2017-05-25 14:13:17

标签: swift vapor

在steam 1中,可以使用以下代码访问ip地址:

request.peerAddress?.address()

这不再适用于Vapor 2。

2 个答案:

答案 0 :(得分:3)

我认为在Vapor 2中它是request.peerHostname

答案 1 :(得分:1)

我知道这有点旧,但万一其他人来寻找答案,我想我会回答我发现的。

request.peerHostname可以使用,但您需要在应用前使用代理(nginx)。如果您没有代理,则peerHostname始终返回0.0.0.0。

将nginx设置为您的Steam应用程序的代理,然后日志记录将起作用。您可以在Deploy下获取有关steam docs站点的更多信息。

我在/ etc / nginx / sites-available / default中设置nginx与此类似的东西:

server {
    server_name hello.com;
    listen 80;

    root /home/vapor/Hello/Public/;

    # Serve all public/static files via nginx and then fallback to Vapor for the rest
        try_files $uri @proxy;

    location @proxy {
        proxy_pass http://127.0.0.1:8080;
        proxy_pass_header Server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass_header Server;
        proxy_connect_timeout 3s;
        proxy_read_timeout 10s;
    }
}

请务必配置您的nginx.conf文件以使用启用站点的目录,并从/ etc / nginx / sites-available / default创建一个链接到/ etc / nginx / sites-enabled / default。

你在nginx.conf文件中需要这样的东西:

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;