Unix:/var/discourse/shared/standalone/nginx.http.sock (2: 파일 또는 디렉터리 없음) [해결됨]

안녕하세요,

제 웹사이트에서 502 Bad Gateway 오류가 발생했고, 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/" "

아래는 제 discourse.conf 파일입니다.

server {
    listen 80;
    listen [::]:80;
    server_name mydmain.net www.mydomain.net;  # <-- 이 부분을 변경하세요

}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name mydomain www.mydomain.net;  # <-- 이 부분을 변경하세요

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

    http2_idle_timeout 5m; # 기본값 3m에서 5m로 상향 조정

    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;

    }
}

제 app.yml 파일입니다.

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/sshd.template.yml"
  - "templates/web.ratelimited.template.yml"
## Lets Encrypt(https)를 추가하려면 아래 두 줄의 주석을 해제하세요
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
##  - "templates/web.socketed.template.yml"
## 이 컨테이너가 어떤 TCP/IP 포트를 노출해야 하나요?
## Apache나 nginx 같은 다른 웹서버와 Discourse가 포트를 공유하려면
## 자세한 내용은 https://meta.discourse.org/t/17247 를 참조하세요
#expose:
# - "2045:80"   # http
# - "1443:443" # https

"templates/web.socketed.template.yml"의 주석도 해제해 보았지만 Nginx 에러 로그에는 동일한 결과가 나타납니다. 이 문제를 해결하려면 어떻게 해야 하나요? 더 이상 아이디어가 없습니다. 도와주세요 ;/

저는 전문가가 아니지만, 제가 틀린 게 아니라면 소켓 방식을 선택하는 경우 web.socketed.template 주석을 해제해야 할 가능성이 큽니다.

저는 이미 그렇게 했는데도 결과가 똑같아요.

내 설치 환경에서 직접 테스트해 보았습니다(기존에는 포트 리스닝 방식을 사용 중이었음)가 정상적으로 동작합니다.

다음 사항을 확인해 주세요:

  • SSL/Let’s Encrypt 템플릿은 주석 처리해야 합니다. 외부 Nginx 설정에서 이미 처리되고 있기 때문입니다.
  • 앱을 다시 빌드하여 /var/discourse/shared/standalone/ 디렉토리에 nginx.http.sock 파일이 생성되도록 하세요.

다음 사항들을 확인하세요.

  • SSL/Let’s Encrypt 템플릿은 외부 Nginx 설정에서 이미 관리되고 있으므로 주석 처리되어 있는지 확인하세요.
  • nginx.http.sock 파일이 /var/discourse/shared/standalone/에 생성되도록 앱을 다시 빌드하세요.

알겠습니다. 그런데 이 줄은 어떻게 되나요? 502 게이트웨이 오류는 사라졌고 웹사이트는 올라와 있지만, 이 줄 때문에 동일한 nginx 오류가 보입니다.

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

SSL이 작동하지 않는 것 같고 이미지도 표시되지 않습니다. 포럼 설정 시 로고를 업로드했는데

아직 처리하지 않았다면, force https discourse 옵션(보안 탭)을 활성화해 보세요.

오마이갓!!! 고마워요 <3 . 과일 좀 사줄게요 :smiley: . 근데 SMTP 설정을 어떻게 해야 하는지 알아내야 해요. Yandex를 쓰니까 안 되어서 테스트 유저를 등록할 때 이메일이 전혀 안 오거든요,

위에서 제시된 모든 방법을 시도해 보았지만 여전히 502 bad gateway 오류가 발생합니다. 현재 저는 HTTPS를 사용하지 않고 있습니다.

다음은 제 오류 메시지입니다:

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

다음은 제 /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;
        }
}

다음은 /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;
        }
}

조언을 부탁드립니다.