재부팅된 Ubuntu 서버, nginx 사이트는 더 이상 브라우저에서 액세스할 수 없습니다.

재부팅된 Ubuntu 서버, nginx 사이트는 더 이상 브라우저에서 액세스할 수 없습니다.

메모리 부족 오류로 보이는 문제가 발생했기 때문에 오늘 아침에 Ubuntu 서버를 재부팅했습니다(가끔 발생하지만 문제를 해결하기에는 충분하지 않았습니다). 하지만 이제 이전에는 잘 작동하던 내 사이트를 브라우저에서 더 이상 액세스할 수 없습니다.

설정: 저는 pm2를 사용하여 NuxtJS 사이트를 데몬화하고 nginx를 역방향 프록시로 사용하여 실행하고 있습니다. 원격 git repo로 푸시할 수 있도록 수신 후 git 후크가 있습니다. 그런 다음 앱을 다시 빌드하고 pm2 인스턴스를 다시 시작합니다.

다음에서만 내 사이트에 액세스할 수 있습니다.서버 내부, 터미널 창 내부. Lynx, wget 및 cURL은 모두 작동하며 심지어 301 리디렉션을 따라 HTTPS로 이동합니다. 그리고 역방향 프록시되는 localhost:3000뿐만 아니라 도메인 자체를 요청할 때 작동하고 있습니다. 마찬가지로 curl https://my-domain.org작동합니다. 다른 터미널 창에서 컬/lynx/etc를 시도하면 시간이 초과될 때까지 기다립니다. 브라우저와 동일 – 시간이 초과될 때까지 기다립니다.

내가 시도/본 내용은 다음과 같습니다.

  • 저는 UFW를 사용하고 있어서 방화벽이 문제인지 확인해 봤습니다. 하지만 80, 443, 8080은 모두 허용으로 설정되어 있습니다.
  • nginx가 어떻게 든 듣고 있지 않은지 확인하려고 시도했습니다 sudo lsof -i -P -n | grep LISTEN. 그 결과는 다음과 같습니다.
nginx     2896     root    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2896     root    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
nginx     2897 www-data    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2897 www-data    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
nginx     2898 www-data    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2898 www-data    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
  • nginx의 access.log를 확인해 보았습니다. 모든 컬/wget/Lynx 요청이 정상적으로 표시되지만 브라우저 요청은 전혀 표시되지 않습니다. 나는 또한 error.log를 살펴보고 다음을 얻었습니다.
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: still could not bind()

지금까지 어떤 해결책도 찾지 못했습니다. 무엇이든 바뀌었으니 재부팅으로 인해 바뀌었기 때문에 당황스럽습니다. 어떤 아이디어라도 대단히 감사하겠습니다.

일부 출력을 추가하려면 편집하세요.

sudo systemctl status nginx:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-07-31 15:05:53 EDT; 27min ago
  Process: 6834 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status
  Process: 6840 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 6837 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6841 (nginx)
   CGroup: /system.slice/nginx.service
           ├─6841 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           ├─6842 nginx: worker process                           
           └─6843 nginx: worker process                           

Jul 31 15:05:53 parrot systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 31 15:05:53 parrot systemd[1]: Started A high performance web server and a reverse proxy server.

출력이 sudo nginx -T길기 때문에요지로 만들었어요.

답변1

이것은 너무 멍청해서 왜 문제가 되었는지 모르겠습니다. 따라서 이에 대한 어떤 의견이라도 감사하게 생각합니다. 내 ufw설정은 다음과 같습니다.

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
8080                       ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
8080 (v6)                  ALLOW       Anywhere (v6) 

거기에 중복된 80년대가 몇 개 있지만 도움이 되는지 확인하기 위해 추가 항목을 추가하고 있었습니다.

누군가 문제가 아닌지 확인하기 위해 ufw를 비활성화해 보라고 권했습니다. 분명히 그랬습니다. 비활성화하자 사이트가 즉시 작동하기 시작했고 다시 활성화했을 때 다시 손상될 것으로 예상했지만 여전히 작동합니다. 따라서 서버를 재부팅할 때 ufw에 관한 내용을 다시 트리거해야 했습니다.

편집: 이것은 아마도 대부분의 서버에 자동 설치되는 iptables-persist 때문일 수 있습니다. 그럴 것 같아이 SO 답변과 동일한 문제입니다.

관련 정보