當在AWS上託管帶有Tornado的散景服務器時,有什麼方法可以將公共IP訪問權限隱藏起來?在AWS上託管帶有龍捲風的散景服務器
回答
選項1:在專用子網和公共子網中運行Tornado。
您可以將您的Bokeh服務器放置在VPC私有子網中,請參閱: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html這將確保它獲取私有IP地址,但不會公開訪問。如果您的Bokeh服務器需要WAN出口,您可以將NAT instance置於公有子網中,將route external traffic置於您的私有子網的NAT中。
龍捲風將被放置在公共子網中,使其可以公開訪問,並通過專用網絡訪問Bokeh。
選項2:在專用子網中的相同實例上運行Bokeh和Tornado。
在公共子網中放置一個Load Balancer,並使用負載均衡器暴露Tornado而不是Bokeh。如果您使用2個或更多的AZ來容錯,這將會很有意義,但它也可以在單個AZ中實現您的目標。
選項3:在公共子網中的相同實例上運行散景和龍捲風。
使用ec2 security group可允許對Tornado端口進行入站訪問,但不允許對Bokeh端口進行入站訪問。您仍然可以使用環回地址(localhost:127.0.0.1)在本地訪問Bokeh。
我不認爲你可以避免暴露Bokeh服務器。一旦Web瀏覽器下載了由autoload_server生成的<script>
,它將嘗試根據<script>
中的URL與Bokeh服務器實例進行直接連接。這個連接然後形成用於Bokeh交互性的WebSocket。
例如:
# Start a Bokeh App for your interactive Graph
chart_app = Application(FunctionHandler(charts.chart_code))
server = Server({"/chart_app": chart_app}, address="localhost" port=5006, allow_websocket_origin=["localhost:80"])
# Handle a call to /chart
@app.route('/chart', methods=['GET'])
def chart_func():
script = autoload_server(model=None, url='http://localhost:5006/chart_app')
return render_template("embed_bootstrap.html", script=script)
的render_template將生成一個完整的HTML網頁,添加了對散景圖的<div>
:
<script
src="http://localhost:5006/chart_app/autoload.js?bokeh-autoload-element=5eaa53a8-3336-40b1-8d29-f48457410a18&bokeh-app-path=/chart_app&bokeh-absolute-url=http://localhost:5006/chart_app"
id="5eaa53a8-3336-40b1-8d29-f48457410a18"
data-bokeh-model-id=""
data-bokeh-doc-id=""
></script>
</div>
</div>
您的瀏覽器現在將嘗試直接連接到Bokeh Server檢索<script>
的主體,然後在腳本中執行js。這將升級您的HTTP連接到一個WEBSOCKET,並將直接與內部Bokeh服務器通信以提供交互性。
不幸的是,這將失敗作爲託管網絡服務器不會暴露在localhost:5006
我們需要的是指定的背景虛化的服務器,一個使用它來創建兩個主機/端口設置的方式散景服務器實際的內部散景服務器(通常在localhost:5006
),另一個用於宣傳連接作爲其<script>
中的實際主機地址和端口以及檢索到的<script>
代碼 - 這樣我們可以讓我們自己的託管HTTP服務器內部重定向這些調用,瀏覽器只能直接與一臺服務器通信。
- 1. 龍捲風服務器self.write
- 2. json rpc在龍捲風web服務器
- 3. 用於龍捲風的WAMP服務器
- 4. 到龍捲風的WebSocket服務器
- 5. webfaction中的龍捲風web服務器
- 6. 與龍捲風網絡服務器
- 7. 龍捲風服務器提供文件
- 8. 不能與龍捲風服務器
- 9. 龍捲風服務器錯誤HTTPS
- 10. Vertx SockJS服務器vs sockjs龍捲風
- 11. 問題與龍捲風Web服務器
- 12. 龍捲風網絡服務器和Ember.js
- 13. 發佈到龍捲風服務器
- 14. 下載龍捲風網絡服務器
- 15. 帶龍捲風的Websockets
- 16. 龍捲風服務器上的Python演示Web項目?
- 17. 在龍捲風
- 18. 沒有代理的龍捲風WebSocket服務器
- 19. 與ajaxupload異步文件上傳到龍捲風web服務器
- 20. JavaScript在龍捲風web服務器中的渲染
- 21. 亞馬遜AWS - dynamoDB與龍捲風
- 22. 錯誤在終端運行龍捲風網絡服務器
- 23. 如何在龍捲風中定義服務器名稱
- 24. 在python中添加遊戲循環到龍捲風服務器
- 25. 龍捲風對Websocket在服務器端足夠了嗎?
- 26. 如何在Amazon aws服務器中託管Microsoft Sql服務器?
- 27. 龍捲風set_secure_cookie
- 28. 龍捲風IOLoop
- 29. 與龍捲風
- 30. 與龍捲風
嗨@Dave,我看着鏈接。這是否意味着Bokeh Server和Tornado服務器將不得不在兩個不同的實例上運行?我正在嘗試的當前實現已在相同的實例上運行,但在不同的端口上運行。 –
@ ansh.gandhi:你想讓龍捲風服務公開嗎? –
是的。目前,Bokeh Server和Tornado都可以公開訪問。我允許在散景服務器上使用Websocket Origin,以便Tornado可以訪問它。但是,我想知道是否有可能讓Tornado服務器面向公衆並且Bokeh在同一個實例上的專用網絡上並仍然有效? 我只是AWS的新手。 –