Unix:/var/discourse/shared/standalone/nginx.http.sock (2: Arquivo ou diretório inexistente) [RESOLVIDO]

Olá a todos,

Estou recebendo um erro 502 Bad Gateway no meu site e não consigo resolver esse problema com o nginx.http.sock.

Nginx error.log

[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/" "

Abaixo está o meu discourse.conf

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

}

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

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

    http2_idle_timeout 5m; # aumentado de 3m, o padrão

    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;

    }
}

Meu app.yml

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/sshd.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente essas duas linhas se quiser adicionar o Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
##  - "templates/web.socketed.template.yml"
## Quais portas TCP/IP este contêiner deve expor?
## Se você deseja que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## consulte https://meta.discourse.org/t/17247 para detalhes
#expose:
# - "2045:80"   # http
# - "1443:443" # https

Tentei também descomentar “templates/web.socketed.template.yml”, mas o resultado no Nginx error.log continua o mesmo. O que devo fazer para resolver esse problema? Estou sem ideias. Por favor, ajudem ;/

Eu não sou um especialista e, a menos que eu esteja errado, se você optar pela abordagem com socket, provavelmente precisará descomentar web.socketed.template.

Ei, eu já fiz isso e obtive o mesmo resultado.

Acabei de testar na minha instalação (estava usando o outro método com uma porta em escuta) e funcionou.

Você precisa garantir que:

  • Os modelos SSL/Let’s Encrypt estejam comentados, pois já são tratados pela sua configuração externa do Nginx.
  • Reconstrua a aplicação para que o arquivo nginx.http.sock apareça em /var/discourse/shared/standalone/

Certifique-se de que:

  • Os modelos SSL/Let’s Encrypt estejam comentados, pois já são gerenciados pela sua configuração externa do Nginx.
  • Reconstrua o aplicativo para que o arquivo nginx.http.sock apareça em /var/discourse/shared/standalone/

Ok, mas o que acontecerá então com essa linha? O erro 502 do gateway desapareceu e o site está no ar, porém vejo o mesmo erro do Nginx por causa dessa linha.

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

Parece que o SSL não está funcionando e as imagens não estão sendo exibidas. Carreguei um logotipo ao configurar o fórum.

Se ainda não foi feito, tente habilitar a opção force https do Discourse (aba de segurança)

OMGGG!!! Muiiitoooo obrigadoooo <3. Devo umas frutas pra você :smiley:. E agora tenho que descobrir como fazer o SMTP funcionar, porque com o Yandex não funcionou e não recebo nenhum e-mail ao cadastrar usuários de teste,

Tentei todas as sugestões acima, mas ainda estou recebendo o erro 502 Bad Gateway. Por enquanto, não estou usando HTTPS.

Abaixo está o meu erro:

> 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/"

Abaixo está o meu arquivo /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;
        }
}

Abaixo está a seção de template do arquivo /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, oriente.