端口要求,dokku digitalocean

时间:2016-07-06 16:06:52

标签: ruby-on-rails nginx digital-ocean dokku

我创建了一个带有dokku图像的Droplet并部署了rails应用程序。一切正常"罚款",除了我需要指定访问应用程序的端口(例如209.107.150.99:66445或example.com:66445)。

当我ssh应用程序并转到/home/dokku/my-app/nginx.conf时我得到了这个:

server {
 listen      [::]:22445;
 listen      22445;

 access_log  /var/log/nginx/<my-app>-access.log;
 error_log   /var/log/nginx/<my-app>-error.log;

 location    / {

   gzip on;
   gzip_min_length  1100;
   gzip_buffers  4 32k;
   gzip_types    text/css text/javascript text/xml text/plain text/x-component$
  gzip_vary on;
  gzip_comp_level  6;

  proxy_pass  http://<my-app>-5000;
  proxy_http_version 1.1;
      gzip on;
  gzip_min_length  1100;
  gzip_buffers  4 32k;
  gzip_types    text/css text/javascript text/xml text/plain text/x-component$
  gzip_vary on;
  gzip_comp_level  6;

  proxy_pass  http://<my-app>-5000;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host $http_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;
}
 include /home/dokku/<my-app>/nginx.conf.d/*.conf;

在此文件中,如果我更改了&#39; listen&#39; 80没有任何反应,当我重新启动或重建应用程序时,它会变回66445。

我不知道该怎么做,无法在google中找到与此相关的大量信息。也许我在部署时遗漏了什么?我跟着这个guide,除了插件部分。

修改

/ var / log / nginx /.

中有四个日志文件

access.log:

<my-ip> - - [06/Jul/2016:11:29:30 -0400] "POST /<my-ip> - - [06/Jul/2016:11:29:25 -0400] "GET / HTTP/1.1" 200 3231 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
<my-ip> - - [06/Jul/2016:11:29:26 -0400] "GET /favicon.ico HTTP/1.1" 200 3231 "http://<app-ip>/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
<my-ip> - - [06/Jul/2016:11:29:30 -0400] "POST /setup HTTP/1.1" 200 27 "http://<app-ip>/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"

对myApp-的access.log:

<my-ip> - - [06/Jul/2016:13:12:44 -0400] "GET /payments/count_new_orders?_=1467823083139 HTTP/1.1" 200 54 "http://<app-ip>:<port>$/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"

并且error.log和myApp-error.log为空。

3 个答案:

答案 0 :(得分:0)

您可以使用的最大端口号为65535。原因是大多数(所有?)tcp堆栈实现端口都是无符号的16位整数。

将您的侦听配置更改为使用较低端口,它应该可以工作:

listen      [::]:65445;
listen      65445;

答案 1 :(得分:0)

您可以为应用程序设置静态端口,设置env变量

$ dokku config:set app_name DOKKU_NGINX_PORT=1234

然后每次部署应用程序时,如果没有域,则具有相同的ip:port组合

你可以转到ip:1234并始终访问应用程序,端口将始终是您在该变量中设置的端口

答案 2 :(得分:0)

在数字海洋的仪表板中,您可以添加域名,但您还需要ssh应用程序并执行此操作:

dokku domains:add appName example.com

现在我没有指定端口,我可以直接输入域名或IP(例如209.107.150.99或example.com)