2017-01-05 2 views
0

Приступая к работе над новым проектом и решил попробовать python в качестве моего внешнего сервиса-отдыха с помощью Flask и Flask-RESTful. У меня все в коробке работает. Я могу запустить приложение с Gunicorn и скрутить его локально.Зачем нужен пушкин в бродяжнике nginx

Когда я пытаюсь подключиться из браузера или ARC (хром-приложение для тестирования сервисов отдыха) или другого бродячего блока, в котором работает клиент mvc в сети, соединение отказывается.

Я нашел способ сделать это, что я понимаю с nginx как обратный прокси-сервер на сервере покоя python, но я не понимаю, для чего это необходимо. Похоже, это будет работа Гуникорна или я что-то упускаю?

Мой бродяга файл настройки, как этот

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 
    config.vm.define "rest" do |rest| 
     rest.vm.box = "gbarbieru/xenial" 
     #rest.vm.network "forwarded_port", guest: 8000, host: 8000 
    end 
    config.vm.define "mvc" do |mvc| 
     mvc.vm.box = "gbarbieru/xenial" 
    end 

    # Disable automatic box update checking. 
    # config.vm.box_check_update = false 

    # Forward ports 
    # config.vm.network "forwarded_port", guest: 8000, host: 8000 

    # host-only access to the machine using a specific IP. 
    # config.vm.network "private_network", ip: "192.168.33.10" 

    # Public network which makes the machine appear as another 
    # physical device on your network. 
    config.vm.network "public_network" 

    # Share an additional folder to the guest VM. 
    # config.vm.synced_folder "../data", "/vagrant_data" 
end 

приложение колба буквально пример из http://flask-restful-cn.readthedocs.io/en/0.3.5/quickstart.html.

Клиент MVC еще не встал, но я просто попытался свернуть с него.

Прямо сейчас на моем местном меня 192.168.1.12, как и остальные, и 192.168.1.13, что и MVC и может свистеть все пути гостя/хост-хост/гость и гость/гость

ответ

1

Предполагая, что вы принимаете минималистичный пример из вашей ссылки http://flask-restful-cn.readthedocs.io/en/0.3.5/quickstart.html, вы должны сделать следующие изменения на app.run вызова: app.run(host= '0.0.0.0', debug=True)

from flask import Flask 
from flask_restful import Resource, Api 

app = Flask(__name__) 
api = Api(app) 

class HelloWorld(Resource): 
    def get(self): 
     return {'hello': 'world'} 

api.add_resource(HelloWorld, '/') 

if __name__ == '__main__': 
    app.run(host= '0.0.0.0', debug=True) 

Это позволит убедиться, что сервер связан со всеми сетевыми интерфейсами и может быть достигнуто не только с сервера LOCALHOST, но и от ваш хозяин в случае бродяг

Второй вариант, чтобы заставить сервер работать на конкретном хосте, как указано в http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application под Внешне Visible сервер главе

Если вы запускаете сервер, вы заметите, что сервер только доступен из ваш собственный компьютер, а не какой-либо другой в сети. Это значение по умолчанию, потому что в режиме отладки пользователь приложения может выполнить произвольный код Python на вашем компьютере.

Если отладчик отключен или доверять пользователям вашей сети, вы можете сделать сервер общедоступным, просто добавив --host=0.0.0.0 в командной строке:

flask run --host=0.0.0.0

Это говорит о вашей операционной системы прослушать все общедоступные IP-адреса.

+0

Спасибо, я на самом деле наткнулся на это для Guincorn вскоре после публикации этого. Любопытно, есть ли преимущество либо 0.0.0.0, либо запуск обратного прокси-сервера> – nerdlyist

+0

, главное преимущество для запуска на '0.0.0.0' в основном состоит в том, что вам не нужно настраивать обратный прокси; поэтому в режиме dev, когда мне нужно разработать функции и быстро установить, я перехожу к простейшей настройке, и если я смогу избежать настройки дополнительной инфраструктуры, то ее намного лучше. –

+0

Последний вопрос, чтобы уточнить. Итак, когда пришло время перейти к производству, лучше ли идти с обратным прокси? – nerdlyist

Смежные вопросы