При размещении сервера Bokeh с Tornado на AWS, что может быть возможным способом скрыть сервер Bokeh от общедоступного доступа к IP?Хостинг Сервер Bokeh с Tornado на AWS
ответ
ВАРИАНТ 1: Запуск Bokeh в частной подсети и торнадо в публичной подсети.
Вы можете разместить свой сервер Bokeh в частной подсети VPC, см.: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html Это обеспечит получение частного IP-адреса, но не будет общедоступным. Если вашему серверу Bokeh требуется выход WAN, вы можете разместить NAT instance в общедоступной подсети и route external traffic на NAT из вашей частной подсети.
Tornado будет размещен в публичной подсети, что сделает его общедоступным и предоставит ему доступ к Bokeh через частную сеть.
ВАРИАНТ 2: Запуск Bokeh и Tornado на том же экземпляре в частной подсети.
Поместите a Load Balancer в общественную подсеть и используйте балансировщик нагрузки, чтобы выставить Tornado, но не Bokeh. Это будет иметь большой смысл, если вы используете 2 или более AZ для отказоустойчивости, но также достигнете своей цели в одном AZ.
ВАРИАНТ 3: Запуск Bokeh и Tornado на том же экземпляре в публичной подсети.
Используйте ec2 security group, чтобы разрешить входящий доступ к портам Торнадо, но не к портам Боке. Вы все равно сможете получить доступ к Bokeh локально, используя loopback-адрес (localhost: 127.0.0.1).
Я не думаю, что вы можете избежать разоблачения сервера Bokeh. После того как веб-браузер загрузил <script>
, сгенерированный сервером autoload_server, он попытается сделать DIRECT-соединение с экземпляром сервера Bokeh на основе URL-адреса в <script>
. Это соединение затем формирует WebSocket, который используется для интерактивности Bokeh.
Например:
# 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
Что нам нужно, это способ указать два узла настройку/порта для сервера бока, тот, который он использует для создания фактический внутренний сервер Bokeh (обычно на localhost:5006
), а другой - для рекламы соединения как фактического реального адреса хоста и порта в его <script>
, а также в извлеченном <script>
кодексе - таким образом мы можем позволить нашему собственному размещенному HTTP-серверу перенаправлять эти вызовы внутренне, и Браузер только ведет переговоры непосредственно с одним сервером.
- 1. Хостинг приложения tornado/websocket
- 2. Хостинг wordpress blog на AWS
- 3. Parse Server: хостинг MongoDB на AWS и хостинг на MongoLab
- 4. Как остановить сервер bokeh?
- 5. сервер tornado служит файлу
- 6. Codeigniter Перенаправление на хостинг-сервер
- 7. Хостинг Git-хранилища на сервере AWS Windows
- 8. Хостинг статический файл для загрузки Python Tornado
- 9. Bokeh файлы сервер: load_from_config = False
- 10. Сервер и клиент XMPP на основе Tornado
- 11. Хостинг веб-сайта на AWS EFS
- 12. хостинг приложения angularjs на хранилище AWS S3
- 13. Настольный сервер на AWS
- 14. Как запустить сервер Tornado на Snow Leopard
- 15. Сервер tornado несовместим с модулем с резьбой
- 16. хостинг Django приложения на AWS EC2 Хост
- 17. Хостинг веб-приложений на Amazon AWS EC2
- 18. Хостинг Jar File на Amazon AWS
- 19. Хостинг TFS на Azure или AWS
- 20. Хостинг Java-сервлета на Amazon AWS
- 21. Веб-сервер Tornado в webfaction
- 22. сервер Tornado: включить CORS запросы
- 23. Хостинг для приложения с Python 2.7, Tornado, MongoDB
- 24. Веб-сервер Tornado и Ember.js
- 25. Перенаправление HTTP на HTTPS на AWS-ELB-Tornado
- 26. Передача параметров с углового $ http на сервер python tornado
- 27. хостинг сервер Git на локальном хосте
- 28. Сервер потокового мультимедиа и хостинг
- 29. хостинг оптимизация сайта (сервер США)
- 30. Хостинг Perforce сервер в Интернете?
Привет @Dave, я заглянул в ссылки.Означает ли это, что сервер Bokeh и сервер Tornado придется запускать в двух разных экземплярах? Текущая реализация, которую я пытаюсь запустить, работает на одном экземпляре, но на разных портах. –
@ ansh.gandhi: вы хотите, чтобы служба торнадо была общедоступной? –
Да. В настоящее время и сервер Bokeh, и Tornado являются общедоступными. Я разрешаю Websocket Origin на сервере bokeh, так что Tornado может получить к нему доступ. Но, интересно, возможно ли, чтобы сервер Tornado был публичным, а Bokeh - в частной сети в одном экземпляре и все еще работает? Я просто знаком с AWS. –