Error de nginx: (13: Permiso denegado) al conectarse a la conexión ascendente)

Estoy ejecutando la aplicación rails con puma, capistrano y nginx en una máquina virtual de google con informática Ubuntu con Ubuntu 14.04 LTS.

Tengo el nginx corriendo en la IP externa. Y cuando lo visito obtengo dos errores nginx en el registro:

2016/02/03 11:58:07 [info] 19754#0: *73 client closed connection while waiting for request, client: ###.##.##.###, server: 0.0.0.0:443 2016/02/03 11:58:07 [crit] 19754#0: *74 connect() to unix:///home/my-user-name/apps/my-web-app/shared/tmp/sockets/my-web-app-puma.sock failed (13: Permission denied) while connecting to upstream, client: ###.##.##.###, server: , request: "GET / HTTP/1.1", upstream: "http://unix:///home/my-user-name/apps/my-web-app/shared/tmp/sockets/my-web-app-puma.sock:/", host: "###.###.###.###" 

Nota: el último ###. ###. ###. ### es la IP externa de la máquina virtual de cómputo de google en la que se ejecuta el código. Creo que las dos primeras IP son la IP de mi casa.

He intentado: setsebool httpd_can_network_connect on como se sugiere aquí: (13: Permiso denegado) mientras se conectaba a la conexión: [nginx] Y devolvió: setsebool: SELinux is disabled. Pero el problema persiste.

He mirado (13: Permiso denegado) mientras me conectaba a la red de subida: [nginx] también, pero parece ser particular para uwsgi

Aquí está mi nginx.conf

 upstream puma { server unix:///home/my-user-name/apps/my-web-app/shared/tmp/sockets/my-web-app-puma.sock; } server { listen 80 default_server deferred; listen 443 ssl; # server_name example.com; ssl_certificate /etc/ssl/my-web-app/my-web-app.com.chained.crt; ssl_certificate_key /etc/ssl/my-web-app/my-web-app.key; root /home/my-web-app/apps/my-web-app/current/public; access_log /home/my-user-name/apps/my-web-app/current/log/nginx.access.log; error_log /home/my-user-name/apps/my-web-app/current/log/nginx.error.log info; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @puma; location @puma { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://puma; } error_page 500 502 503 504 /500.html; client_max_body_size 10M; keepalive_timeout 10; } 

Ejecuto nginx con sudo service nginx restart Luego ejecuto puma con: RACK_ENV=production bundle exec puma -p 3000 y devuelve:

 Puma starting in single mode... * Version 2.14.0 (ruby 2.1.7-p400), codename: Fuchsia Friday * Min threads: 0, max threads: 16 * Environment: production * Listening on tcp://0.0.0.0:3000 Use Ctrl-C to stop 

EDITAR 1

Se sugirió que ejecute puma en unix no tcp 3000 para que coincida con nginx

He intentado ejecutar puma en unix a través del comando:

 RACK_ENV=production bundle exec puma -d -b unix:///tmp/my-web-app.sock --pidfile /tmp/puma.pid 

que dio:

 Puma starting in single mode... * Version 2.14.0 (ruby 2.1.7-p400), codename: Fuchsia Friday * Min threads: 0, max threads: 16 * Environment: production * Daemonizing... 

Lee el texto anterior, pero no se detiene, el símbolo del sistema vuelve a aparecer inmediatamente a pesar del ‘…’ al final.

Este comando aparentemente no funciona, por lo que si alguien puede sugerir cómo ejecutar puma en unix y no en tcp 3000, podría completar la sugerencia. (Aunque sospecho que hay un problema de configuración de nginx que puede estar ocurriendo antes que cualquier cosa que tenga que ver con puma)

EDIT 2 Adjuntando puma.rb

 #!/usr/bin/env puma directory '/home/my-user-name/apps/my-web-app/current' rackup "/home/my-user-name/apps/my-web-app/current/config.ru" environment 'production' pidfile "/home/my-user-name/apps/my-web-app/shared/tmp/pids/puma.pid" state_path "/home/my-user-name/apps/my-web-app/shared/tmp/pids/puma.state" stdout_redirect '/home/my-user-name/apps/my-web-app/current/log/puma.error.log', '/home/my-user-name/apps/my-web-app/current/log/puma.access.log', true threads 2,8 bind 'unix:///home/my-user-name/apps/my-web-app/shared/tmp/sockets/my-web-app-puma.sock' workers 1 preload_app! on_restart do puts 'Refreshing Gemfile' ENV["BUNDLE_GEMFILE"] = "/home/my-user-name/apps/my-web-app/current/Gemfile" end on_worker_boot do ActiveSupport.on_load(:active_record) do ActiveRecord::Base.establish_connection end end 

EDITAR 3

Ahora intenté simplemente ejecutar el servidor de Rails en el puerto 80 directamente. rvmsudo rails server -p 80 : rvmsudo rails server -p 80 y rvmsudo rails server -p 80 :

 => Booting Puma => Rails 4.2.4 application starting in development on http://localhost:80 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server Puma 2.14.0 starting... * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://localhost:80 Exiting /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `initialize': Address already in use - bind(2) for "localhost" port 80 (Errno::EADDRINUSE) from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `new' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `add_tcp_listener' from (eval):2:in `add_tcp_listener' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/rack/handler/puma.rb:33:in `run' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/rack-1.6.4/lib/rack/server.rb:286:in `start' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/railties-4.2.4/lib/rails/commands/server.rb:80:in `start' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/railties-4.2.4/lib/rails/commands.rb:17:in `' from bin/rails:4:in `require' from bin/rails:4:in `' 

EDITAR 4

Si ejecuto el servicio sudo nginx stop, rvmsudo rails server -p 80 otra vez:

 => Booting Puma => Rails 4.2.4 application starting in development on http://localhost:80 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server Puma 2.14.0 starting... * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://localhost:80 

Eso significa que ese enfoque fue incorrecto, ya que sin nginx cuando visito la IP externa nada devuelve ahora The server refused the connection. A diferencia del original:

 We're sorry, but something went wrong. If you are the application owner check the logs for more information. 

Si alguien sabe cómo prevenir el error original, cualquier sugerencia sería muy apreciada.

EDITAR 5 La pregunta original permanece, pero ¿alguien puede decirme si esto es un problema de https o un problema de SSL?

Editar 6

He intentado ejecutar puma directamente en 80 y obtengo un error de permiso en 80.

Intento: RACK_ENV=production bundle exec puma -p 80 y obtengo:

 Puma starting in single mode... * Version 2.14.0 (ruby 2.1.7-p400), codename: Fuchsia Friday * Min threads: 0, max threads: 16 * Environment: production * Listening on tcp://0.0.0.0:80 /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `initialize': Permission denied - bind(2) for "0.0.0.0" port 80 (Errno::EACCES) from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `new' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `add_tcp_listener' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:98:in `block in parse' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:84:in `each' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/binder.rb:84:in `parse' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/runner.rb:119:in `load_and_bind' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/single.rb:79:in `run' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/lib/puma/cli.rb:215:in `run' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/gems/puma-2.14.0/bin/puma:10:in `' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/bin/puma:23:in `load' from /home/my-user-name/apps/my-web-app/shared/bundle/ruby/2.1.0/bin/puma:23:in `' 

Creo que esto se debe a que el puerto 80 tiene permisos más altos que otros. Entonces, ejecuté sudo RACK_ENV=production bundle exec puma -p 80 pero eso acaba de regresar: Your Ruby version is 1.9.3, but your Gemfile specified 2.1.7

Tuve el mismo error contigo, obtuve una solución pero no sé si debería ser correcta. Cambie la primera línea del archivo /etc/nginx/nginx.conf

user www-data;
a
user root;

Luego reinicie el nginx usando:

service nginx restart O systemctl restart nginx

¡Funciona bien!

    Intereting Posts