안녕하세요,
제 웹사이트에서 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 . 과일 좀 사줄게요
. 근데 SMTP 설정을 어떻게 해야 하는지 알아내야 해요. Yandex를 쓰니까 안 되어서 테스트 유저를 등록할 때 이메일이 전혀 안 오거든요,
Mednosis
(Mednosis)
8
위에서 제시된 모든 방법을 시도해 보았지만 여전히 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;
}
}
조언을 부탁드립니다.