我创建了一个带有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为空。
答案 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)