Unix:/var/discourse/shared/standalone/nginx.http.sock (2: No existe el archivo o directorio) [SOLUCIONADO]

Hola a todos,

He obtenido un error 502 Bad Gateway en mi sitio web y no puedo superar este problema con nginx.http.sock

Registro de errores de Nginx

[crit] 14339#14339: *1 connect() to unix:/var/discourse/shared/standalone/nginx.http.sock failed (2: No such file or directory) while connecting to upstream, client: **.***.***.***, server: mydomain.net, request: "GET / HTTP/2.0", upstream: "http://unix:/var/discourse/shared/standalone/nginx.http.sock:/", host: "mydomain.net", referrer: "https:/mydomain.net/" "

A continuación, mi discourse.conf

server {
    listen 80;
    listen [::]:80;
    server_name mydmain.net www.mydomain.net;  # <-- cambiar esto

}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name mydomain www.mydomain.net;  # <-- cambiar esto

    ssl on;
    ssl_certificate /etc/letsencrypt/live/mydomain.net/fullchain.pem; # gestionado por Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.net/privkey.pem; # gestionado por Certbot
    ssl_dhparam /etc/letsencrypt/live/mydomain.net/dhparams.pem;
    include /etc/nginx/snippets/ssl.conf;

    http2_idle_timeout 5m; # aumentado desde el valor predeterminado de 3m

    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;

    }
}

Mi app.yml

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/sshd.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
##  - "templates/web.socketed.template.yml"
## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para obtener detalles
#expose:
# - "2045:80"   # http
# - "1443:443" # https

También intenté descomentar “templates/web.socketed.template.yml”, pero obtuve el mismo resultado en el registro de errores de Nginx. ¿Qué debo hacer para resolver este problema? Se me han acabado las ideas. Por favor, ayúdenme ;/

No soy un experto y, a menos que esté equivocado, si optas por el método de socket, probablemente necesites descomentar web.socketed.template.

¡Hola! Ya lo hice y obtuve el mismo resultado.

Acabo de probarlo en mi instalación (usaba el otro método con un puerto de escucha) y funciona.

Debes asegurarte de que:

  • Las plantillas de SSL/Let’s Encrypt estén comentadas, ya que ya están gestionadas por tu configuración externa de Nginx.
  • Reconstruyas la aplicación para que el archivo nginx.http.sock aparezca en /var/discourse/shared/standalone/.

Asegúrate de que:

  • Las plantillas de SSL/Let’s Encrypt estén comentadas, ya que tu configuración externa de Nginx ya las gestiona.
  • Reconstruyas la aplicación para que el archivo nginx.http.sock aparezca en /var/discourse/shared/standalone/

Bien, pero ¿qué pasará entonces con esta línea? El error 502 de gateway ha desaparecido y el sitio web está en línea, pero veo el mismo error de Nginx debido a esta línea.

location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;

Parece que SSL no funciona y las imágenes no se muestran. Subí un logotipo al configurar el foro.

Si aún no lo has hecho, intenta habilitar la opción de Discourse force https (pestaña de seguridad)

¡OMGGG!!! ¡Muchísimas gracias <3. Te debo unas frutas :smiley:. Y ahora tengo que averiguar cómo hacer que funcione SMTP, porque con Yandex no funcionó y no recibo ningún correo electrónico al registrar usuarios de prueba.

He probado todas las sugerencias anteriores, pero aún obtengo el error 502 Bad Gateway. Por ahora, no estoy usando HTTPS.

A continuación se muestra mi error:

> 2020/04/02 00:17:54 [crit] 18599#18599: *1 connect() to unix:/var/discourse/shared/standalone/nginx.http.sock failed (2: No such file or directory) while connecting to upstream, client: xx.xxx.xxx.xx, server: talk.mydomain.com, request: "GET / HTTP/1.1", upstream: "http://unix:/var/discourse/shared/standalone/nginx.http.sock:/", host: "talk.mydomain.com"
> 
> 2020/04/02 00:17:54 [crit] 18599#18599: *1 connect() to unix:/var/discourse/shared/standalone/nginx.http.sock failed (2: No such file or directory) while connecting to upstream, client: xx.xxx.xxx.xx, server: talk.mydomain.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/var/discourse/shared/standalone/nginx.http.sock:/favicon.ico", host: "talk.mydomain.com", referrer: "http://talk.mydomain.com/"

A continuación se muestra mi archivo /etc/nginx/sites-enabled/discourse.conf:

server {
        listen 80; listen [::]:80;
        server_name talk.mydomain.com;
        location / {
                proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
                proxy_set_header Host $http_host;
                proxy_http_version 1.1;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

A continuación se muestra la sección de plantilla de /var/discourse/containers/app.yml:

server {
        listen 80; listen [::]:80;
        server_name talk.mydomain.com;
        location / {
                proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
                proxy_set_header Host $http_host;
                proxy_http_version 1.1;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

Por favor, asesóreme.