2016-08-02 1 views
0

주소/포트 및 소켓에서 수신 대기하는 토네이도 서버가 있습니다. 그래서 (많이 벗었) 대략 같은 서버를 만들 :요청이 토네이도로 소켓 또는 URL을 통해 왔는지 확인

curl -XGET --unix-socket mysock.sock http:/ping 

로 : 요청이 즉 무언가 같이, 소켓을 통해 수신 될 때 나는 구별 할 수 있도록하고 싶습니다

from tornado import httpserver 
from tornado.netutil import bind_unix_socket 

server = httpserver.HTTPserver(
    request_callback=some_callback, 
    io_loop=some_loop, 
) 
unix_socket = bind_unix_socket("mysock.sock") 
server.add_socket(unix_socket) 
server.listen(address="some_host", port=1234) 

내가 요청이 수신 될 때 토네이도가 사용하는 HTTPServerRequest 보았다

curl http://some_address:1234/ping 

,하지만 가장 좋은 방법은 둘 사이의 차이를 구별하는 것입니다 모르겠어요 :에 반대했다. 나는 remote_ip을보고 localhost에서 왔는지를 볼 수 있지만 이상적이라고는 생각하지 않습니다.

답변

1

localhost은 잘 알려진 IP 주소를 사용하는 인터넷 도메인 인터페이스입니다. IP 주소가없는 유닉스 도메인 소켓과 같지 않다.

소스를 간략히 살펴보면 remote_ip 속성에 유닉스 소켓에 수신 된 연결에 대해 '0.0.0.0'이 포함될 것을 제안합니다.

합니다 (remote_ip 아마도 로컬 호스트 연결을 통해 수신 연결에 대한 '127.0.0.1' 될 것입니다.)

+0

는 remote_ip'가에서 tornado.httpserver.py''에 따라 유닉스 소켓 '0.0.0.0' 될 것'같은데 출처 (https://github.com/tornadoweb/tornado/blob/81ee310adcd905fbdf7c98d9fb6ef0c5a46026c2/tornado/httpserver.py#L203). 또한,'request_context'의'address_family'는'AF_UNIX'라고 생각합니다. – thomascirca

관련 문제