Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从Vapor 2.0中的请求对象获取IP地址?_Swift_Vapor - Fatal编程技术网

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

Swift 从Vapor 2.0中的请求对象获取IP地址?,swift,vapor,Swift,Vapor,在vapor 1中,可以使用以下代码访问ip地址: request.peerAddress?.address() 这在Vapor 2中不再有效。我认为这是请求。Vapor 2中的peerHostname我认为这是请求。Vapor 2中的peerHostname我知道这有点老了,但万一有人来找答案,我想我会用我找到的答案来回答 request.peerHostname可以工作,但您需要在应用程序前使用代理(nginx)。如果没有代理,peerHostname始终返回0.0.0.0 将nginx设置

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

request.peerAddress?.address()


这在Vapor 2中不再有效。

我认为这是
请求。Vapor 2中的peerHostname
我认为这是
请求。Vapor 2中的peerHostname
我知道这有点老了,但万一有人来找答案,我想我会用我找到的答案来回答

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

将nginx设置为vapor应用程序的代理,则日志记录将正常工作。您可以在Deploy下的vapor 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/*;

我知道这有点过时,但万一有人来找答案,我想我会用我的发现来回答

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

将nginx设置为vapor应用程序的代理,则日志记录将正常工作。您可以在Deploy下的vapor 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/*;

当我在本地进行测试时,当我从本地IP为192.168.x.y的设备发出请求时,它会打印0.0.0,因此我无法验证这是否有效。实际部署时,它应该会工作得更好(它尝试使用一系列东西,例如
x-forwarded-for
),并返回到它能找到的内容。当我在本地进行测试时,当我从本地IP为192.168.x.y的设备发出请求时,它会打印出0.0.0.0,因此我无法验证这是否有效。实际部署时,它应该会工作得更好(它尝试使用一系列东西,例如
x-forwarded-for
),然后返回到它能找到的东西。