我正在使用Flask Limiter来阻止洪水请求..但是当我使用flask_limiter.util.get_remote_address ..它总是在我的池上返回127.0.0.1 ..我正在使用AngularJS作为前端,烧瓶为我的后端和Nginx作为我的服务器。我的前端和后端都在我的AWS中的一台机器上。所以我试图通过众多失败的attemtps测试它,然后在我的远程地址池中它只显示127.0.0.1 ..
这些是我的请求标题:
Authorization:
Referer: example.com
Origin: example.com
Content-Length: 36
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:43.0) Gecko/20100101 Firefox/43.0
Connection: close
Host: 127.0.0.1:8000
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
我尝试打印request.headers.environ,这就是我得到的:
{'HTTP_AUTHORIZATION': '', 'wsgi.multiprocess': False, 'HTTP_REFERER': 'http://example.com/', 'SERVER_SOFTWARE': 'Werkzeug/0.10.4', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'POST', 'PATH_INFO': '/user/login/dp', 'HTTP_ORIGIN': 'http://example.com', 'SERVER_PROTOCOL': 'HTTP/1.0', 'QUERY_STRING': '', 'werkzeug.server.shutdown': <function shutdown_server at 0x7f5017896398>, 'CONTENT_LENGTH': '36', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:43.0) Gecko/20100101 Firefox/43.0', 'HTTP_CONNECTION': 'close', 'SERVER_NAME': '0.0.0.0', 'REMOTE_PORT': 52173, 'wsgi.url_scheme': 'http', 'SERVER_PORT': '8000', 'werkzeug.request': <Request 'http://127.0.0.1:8000/user/login/dp' [POST]>, 'wsgi.input': <socket._fileobject object at 0x7f50178938d0>, 'HTTP_HOST': '127.0.0.1:8000', 'wsgi.multithread': True, 'HTTP_ACCEPT': 'application/json, text/plain, */*', 'wsgi.version': (1, 0), 'wsgi.run_once': False, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f50198671e0>, 'REMOTE_ADDR': '127.0.0.1', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5', 'CONTENT_TYPE': 'application/x-www-form-urlencoded; charset=UTF-8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate'}
为什么会这样?
答案 0 :(得分:0)
您可以将x-forward-for设置为Nginx设置:
打开此文件:
/etc/nginx/sites-available/mysite.conf
添加:
proxy_set_header X-Forwarded-For $remote_addr;
在您的服务器名称下。不要忘记重启Nginx。