2015-02-25 3 views
0

Я пытаюсь запустить веб-сервер с помощью виртуальной машины с помощью Google Compute Engine и Dokku.Google Compute Engine Dokku Nginx

Что я сделал:

  • Я создал виртуальную машину (экземпляр) с помощью Google Compute Engine
  • я включил TCP: 80 порт, чтобы разрешить входящий соединение для веб-приложений
  • я установил Докку внутри виртуальная машина
  • я разворачивал свой веб-приложение с помощью GIT толчок Докку мастер
  • сервер работает нормально (я проверил журналы с помощью Докку журналы MyApp

Однако, я не могу получить доступ к нему с помощью внешнего IP-адрес экземпляра

Я думаю, что это проблема с Nginx

+0

Похоже, проблема системного администрирования, а не разработки программного обеспечения, так что вы можете получить помощь, задавая этот Q над на serverfault.com, а не здесь - мы делаем мониторинг Google-вычислительный двигатель тег там тоже ... –

+0

Я предлагаю проверить, если ваш экземпляр прослушивает порт 80 локально. Вы также хотели бы проверить, привязывается ли он к IP-адресу экземпляра или просто на localhost, например. телнет локальный 80 телнет экземпляра IP 80 пожалуйста, вы можете подтвердить, что позже испытание успешно, если не вы, вероятно, потребуется изменить конфигурацию, чтобы расширить сеть интерфейсов процессы связываются с – Feczo

ответ

0

Я изменил nginx.conf по умолчанию внутри/дома/Докку //

для этого:

upstream $APP-domains { server $INTERNAL_IP:$PORT; } 
server { 
    listen  [::]:80; 
    listen  80; 
    server_name $EXTERNAL_IP; 

    location/{ 
    proxy_pass http://$APP-domains; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $$http_upgrade; 
    proxy_set_header Connection upgrade; 
    proxy_set_header Host $$host; 
    proxy_set_header X-Forwarded-Proto $$scheme; 
    proxy_set_header X-Forwarded-For $$remote_addr; 
    proxy_set_header X-Forwarded-Port $$server_port; 
    proxy_set_header X-Request-Start $$msec; 
    proxy_cache_bypass $$http_upgrade; 
    } 
} 

где $ APP, $ PORT, $ INTERNAL_IP, $ EXTERNAL_ IP должен измениться на основе приложения dokku, развернутого.

$ PORT =/дом/Докку // PORT

$ INTERNAL_IP =/дом/Докку // IP

$ APP = app_name

$ EXTERNAL_IP = Ваш публичный IP

После изменения nginx.conf внутри места приложения, вы должны перезапустить NGINX (sudo service nginx restart)

Это питон с использованием ткани для обработки этой процедуры сс:

@task 
def config_vhost(ip, app): 
    """Use the nginx template to redirect app to port 80""" 
    port = run('cat /home/dokku/{}/PORT'.format(app)) 
    internal_ip = run('cat /home/dokku/{}/IP'.format(app)) 

    values = {'EXTERNAL_IP': ip, 'INTERNAL_IP': internal_ip, 'PORT': port, 'APP': app} 

    nginx = open(NGINX_TEMPLATE, 'r').read() 
    nginx_template = string.Template(nginx) 

    nginx_conf = nginx_template.substitute(values) 
    sudo("echo '{}' > /home/dokku/{}/nginx.conf".format(nginx_conf, app)) 
    sudo("service nginx restart")