Google Compute Engine Dokku Nginx
Я пытаюсь запустить веб-сервер, используя виртуальную машину, используя Google Compute Engine и Dokku.
Что я сделал:
- Я создал виртуальную машину (экземпляр) с помощью Google Compute Engine
- Я включил порт TCP:80, чтобы разрешить входящее соединение для веб-приложений
- Я установил Dokku внутри виртуальной машины
- Я развернул свое веб-приложение с помощью git push dokku master
- Сервер работает нормально (я проверил логи с помощью dokku logs myapp
Тем не менее, я не могу получить к нему доступ, используя внешний IP-адрес экземпляра
Я думаю, что это проблема с nginx
1 ответ
Я изменил nginx.conf по умолчанию внутри /home/dokku//
для этого:
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 = /home/dokku// PORT
$ INTERNAL_IP = /home/dokku// IP
$ APP = имя_приложения
$EXTERNAL_IP = ваш публичный IP
После изменения nginx.conf внутри местоположения приложения, вы должны перезапустить NGINX (перезапуск службы sudo nginx)
Это Python Gist, использующий ткань для обработки этого процесса:
@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")