1

Google Compute Engine と Dokku を使用して、仮想マシンを使用して Web サーバーを実行しようとしています。

私がしたこと:

  • Google Compute Engine を使用して仮想マシン (インスタンス) を作成しました
  • TCP:80 ポートを有効にして、Web アプリの着信接続を許可しました
  • 仮想マシン内にDokkuをインストールしました
  • git push dokku master を使用して Web アプリをデプロイしました
  • サーバーは正常に動作しています (dokku logs myapp を使用してログを確認しました

ただし、インスタンスの外部 IP アドレスを使用してアクセスすることはできません

nginxの問題だと思う

4

1 に答える 1

1

/home/dokku// 内のデフォルトの 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 = /home/ドック//PORT

$INTERNAL_IP = /home/ドック//IP

$APP = app_name

$EXTERNAL_IP = あなたのパブリック IP

アプリの場所内の nginx.conf を変更した後、NGINX を再起動する必要があります (sudo service nginx restart)

これは、ファブリックを使用してこのプロセスを処理する Python の要点です。

@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")
于 2015-03-12T16:56:53.273 に答える