我只是做與Apache-2.4 mod_wsgi的一個考驗,而這個簡單的WSGI腳本:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
yield str(environ)
而且,至少這個mod_wsgi的,你得到的端口environ['REMOTE_PORT']
。
這裏的environ
全文:
{
'mod_wsgi.listener_port':'80',
'mod_wsgi.listener_host':'',
'CONTEXT_DOCUMENT_ROOT':'/usr/htdocs',
'SERVER_SOFTWARE':'Apache',
'SCRIPT_NAME':'',
'mod_wsgi.enable_sendfile':'0',
'mod_wsgi.handler_script':'',
'SERVER_SIGNATURE':'<address>Apache Server at 127.0.0.1 Port 80</address>\n',
'REQUEST_METHOD':'GET',
'PATH_INFO':'/',
'SERVER_PROTOCOL':'HTTP/1.1',
'QUERY_STRING':'',
'HTTP_USER_AGENT':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.58 Safari/537.36',
'HTTP_CONNECTION':'keep-alive',
'SERVER_NAME':'127.0.0.1',
'REMOTE_ADDR':'127.0.0.1',
'mod_wsgi.queue_start':'1409123400512619',
'mod_wsgi.request_handler':'wsgi-script',
'apache.version':(2, 4, 10),
'wsgi.url_scheme':'http',
'PATH_TRANSLATED':'/opt/wsgi/wsgi.py/',
'SERVER_PORT':'80',
'wsgi.multiprocess':True,
'mod_wsgi.input_chunked':'0',
'SERVER_ADDR':'127.0.0.1',
'DOCUMENT_ROOT':'/usr/htdocs',
'mod_wsgi.process_group':'wsgi_local',
'mod_wsgi.daemon_connects':'1',
'SCRIPT_FILENAME':'/opt/wsgi/wsgi.py',
'SERVER_ADMIN':'[no address given]',
'wsgi.input':<mod_wsgi.Input object at 0x7fd6fc5d24b0>,
'HTTP_HOST':'127.0.0.1',
'CONTEXT_PREFIX':'',
'wsgi.multithread':True,
'mod_wsgi.callable_object':'application',
'HTTP_CACHE_CONTROL':'max-age=0',
'mod_wsgi.daemon_restarts':'0',
'REQUEST_URI':'/',
'HTTP_ACCEPT':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'wsgi.file_wrapper':<type 'mod_wsgi.FileWrapper'>,
'wsgi.version':(1, 0),
'GATEWAY_INTERFACE':'CGI/1.1',
'wsgi.run_once':False,
'wsgi.errors':<mod_wsgi.Log object at 0x7fd6fc5e8930>,
'REMOTE_PORT':'32915',
'HTTP_ACCEPT_LANGUAGE':'fr,en-US;q=0.8,en;q=0.6',
'REQUEST_SCHEME':'http',
'mod_wsgi.version':(4,2,7),
'mod_wsgi.script_start':'1409123400512718',
'mod_wsgi.application_group':'127.0.0.1|',
'mod_wsgi.script_reloading':'1',
'mod_wsgi.request_start':'1409123400512528',
'HTTP_ACCEPT_ENCODING':'gzip,deflate,sdch',
'UNIQUE_ID':'[email protected]',
'mod_wsgi.daemon_start':'1409123400512693'
}
客戶端遠程端口不會告訴你任何東西,並不會成爲客戶實際的端口,如果代理是連接的一部分。你能解釋你想要做什麼,也許可以建議一個更好的選擇? – 2012-08-04 00:20:21
我知道它不會長期爲我提供客戶信息,但我只想了解我在哪裏可以檢索到這些信息。 然後,側面的問題仍然是如何從bottly.py – Gabriel 2012-08-04 15:07:40
訪問原始套接字它仍然沒有任何意義,爲什麼你會想要實際的'端口'號碼。它將是一個隨機數,範圍由操作系統爲這些客戶端套接字分配。你能澄清一下,你真正在做的是不是REMOTE_ADDR,一些服務器已經提供了嗎?也就是IP地址。這將爲最後一跳客戶端提供IP。在此之前,您可以使用X-Forwarded-For,但使用它可能會產生問題。正如我所問,解釋你想要做什麼並澄清你的條款,因爲你強調端口這個詞很混亂。 – 2012-08-04 23:26:40