워드프레스에서 사이트 접속 시 .php 파일만 계속 다운로드 받아질 때

워드프레스 사이트가 제대로 작동하지 않고 .php 파일만 계속 다운받아질 때 해결방안

오늘 제 두번째 워드프레스 사이트 보안 관련해서 몇 가지 손대보다가 처음엔 로그아웃이 안되는 현상, 그 다음엔 로그아웃을 어찌어찌해도 다시 로그인이 안되는 현상이 발생했습니다. 이 현상이 발생하면서 동시에 wp-login.php만 주구장창 다운로드가 되더군요.

처음엔 로그인 상태였는데 보안 관련해서 로그아웃해서 테스트 해보려고 로그아웃 시도했는데 갑자기 로그아웃 안되고 wp-login.php 파일만 다운로드 되었습니다. 이것이 모든 문제의 시작이었습니다.

로그아웃이 안돼서 쿠키, 캐싱 파일 제거했더니 어찌어찌 로그아웃이 됐긴 했는데 다시 워드프레스 사이트에 들어가보려고 보니(/wp-login.php, /wp-admin 통해 접속 시도) 이젠 로그인이 안되고 wp-login.php만 다운로드 되더군요.

컴퓨터에 점점 쌓여가는 wp-login.php 파일들..ㅎㅎ

우려스러워서 왜 이런 현상이 일어나나 잠시 고민해봤습니다. 생각해보니 제가 오늘 사이트 보안 강화하려고 제 nginx의 .conf파일(nginx 버젼 .htaccess파일)에서 코드 몇 줄 추가했던 게 생각이 나더군요.

그래서 해당 코드를 다시 확인해봤습니다.

.conf 파일에 접속 완료

제 .conf 파일을 보니 왜 사이트 접속이 안되고 php 파일만 다운받아지는지 알겠더군요.

제 코드의 문제였습니다. 잘못 입력한 코드의 형태는 아래와 같았습니다.

location = /wp-login.php {
    allow XXX.XXX.XX.XX(본인 ip 주소);
    deny all;
}

스택 오버 플로우(링크는 여기)에서 보니까 wp-login.php에서 본인 ip 말고 다른 ip들을 막으려면 코드 내 php관련 설정도 꼭 해줘야하더군요. 그래서 위의 잘못된 코드를 이렇게 변경했습니다.

location = /wp-login.php {
    allow XXX.XXX.XX.XX(본인 ip 주소);
    deny all;
    include snippets/fastcgi-php.conf;
    fastcgi_pass php-handler;
}

제 .conf 파일에서는 이런 식으로 적용되었습니다.

변경된 .conf 파일. 위의 빨간 php 설정 부분을 똑같이 /wp-login.php에도 붙여넣었습니다.

이후, esc 누르고 :wq 입력 후, 엔터를 쳐서 변경된 .conf 파일 저장 후, sudo nginx -t 커맨드로 입력한 코드에 이상이 없나 확인하고, 아무 이상이 없어서 sudo systemctl restart nginx 커맨드로 nginx 재시작했습니다.

nginx 재시작하면 어느정도 딜레이 시간이 있습니다.

그래서 저는 딜레이 시간 동안 제 쿠키와 캐싱 정보를 미리 제거했습니다.

쿠키, 캐싱 정보 삭제 방법

웹 브라우저에서 ‘인터넷 사용 기록 삭제’ 누르기 -> ‘쿠키 및 기타 사이트 데이터’, ‘캐시된 이미지 및 파일’ 눌러져있나 확인 -> 눌러져있으면 아래의 ‘인터넷 기록 삭제’ 버튼 눌러서 인터넷 쿠키, 캐싱 정보 삭제

저는 맥북 유저, 크롬 유저여서 왼쪽 상단에 ‘chrome’을 누르면 ‘인터넷 사용 기록 삭제’ 버튼을 찾을 수 있습니다.
이렇게 두개 체크하고 아래의 인터넷 기록 삭제 버튼까지 누르면 쿠키, 캐싱 정보 다 삭제됩니다.

쿠키, 캐싱 정보 제거 후, 다시 제 웹사이트 주소/wp-admin 또는 제 웹사이트 주소/wp-login.php로 제 웹사이트에 접속해봤더니 제대로 접속이 되는 걸 확인할 수 있습니다. 웹사이트 로그인 후에는 로그아웃도 정상적으로 이루어졌습니다. 더 이상 wp-login.php 파일이 다운로드 받아지지 않았습니다.

결론: 워드프레스 사이트에 안들어가지고 .php 파일만 계속 다운로드된다면 본인이 .htaccess나 .conf 파일을 잘못 수정한 게 아닌지 확인하자. php 설정을 제대로 해줘야 해당 에러가 사라진다.

이상입니다.




Leave a Comment