500 Internal Server Error 뜻과 원인, 해결 방법 (500 에러)

핵심 요약

500 Internal Server Error(500 에러)는 서버가 "요청을 처리하지 못하게 하는 예기치 않은 상황을 만났다"는 뜻입니다(RFC 9110). 서버에서 무언가가 고장 났지만 무엇이 문제인지는 알려 주지 않는 상태입니다. 방문자라면 1분 뒤 한 번만 새로고침하고 모두에게 안 열리는지 확인하세요. 고치는 것은 사이트 관리자의 몫입니다. 관리자라면 먼저 오류 로그를 읽으세요. nginx의 500은 대개 그 뒤의 앱(PHP, Node.js, Python)에서 오고, Apache라면 .htaccess, PHP 제한, 플러그인을 확인하세요.

지금 확인하기

HTTP 에러 500 내부 서버 오류 수정 가이드 — 서버 크래시 화면과 단계별 디버깅 솔루션
HTTP 에러 500 내부 서버 오류 수정 가이드 — 서버 크래시 화면과 단계별 디버깅 솔루션
읽기 시작
  1. HTTP 오류 500이란?
  2. 500 오류의 표시 형태
  3. nginx에서 500 Internal Server Error가 날 때
  4. HTTP 오류 500의 주요 원인
  5. 방문자를 위한 500 오류 해결 방법
  6. 구글에서 "500. That's an error."(500. 오류가 발생했습니다)가 뜰 때
  7. 해결 방법 1: 서버 오류 로그 확인
  8. 해결 방법 2: .htaccess 점검 및 복구
  9. 해결 방법 3: 파일 권한 수정
  10. 해결 방법 4: PHP 메모리 및 실행 제한 늘리기
  11. 해결 방법 5: 플러그인 및 테마 비활성화 (CMS)
  12. 해결 방법 6: 데이터베이스 연결 확인 및 복구
  13. 해결 방법 7: PHP 버전 호환성 확인
  14. 해결 방법 8: 디스크 공간 확인
  15. 500 vs 502 vs 503 vs 504: 차이점은?
  16. 500 오류가 SEO에 미치는 영향
  17. 500 오류를 예방하는 방법
  18. 자주 묻는 질문

HTTP 오류 500이란?

HTTP 오류 500(Internal Server Error)은 웹 서버가 요청을 처리하는 도중 무언가가 고장 났는데, 서버가 그 원인을 알려 주지 않았다는 뜻입니다. 가장 포괄적인 서버 오류입니다.

HTTP 표준은 500을 한 문장으로 정의합니다. "The 500 (Internal Server Error) status code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request"(RFC 9110 §15.6.1). 서버가 요청을 처리하지 못하게 하는 예기치 않은 상황을 만났다는 뜻입니다. 503과 달리, 500은 문제가 일시적인지에 대해서는 아무것도 알려 주지 않습니다.

원인은 거의 항상 서버 측 코드의 버그, 잘못된 설정, 크래시이며 방문자가 잘못한 것은 없습니다. 해결은 사이트 소유자나 관리자가 해야 합니다.

페이지가 반환하는 상태 코드 확인하기

500 오류의 표시 형태

표시되는 문구는 서버와 앱에 따라 다릅니다.

  • 500 Internal Server Error — 표준 상태 줄
  • 500 Internal Server Error 아래에 "nginx" 표시 — nginx 자체의 오류 페이지
  • The server encountered an internal error or misconfiguration and was unable to complete your request. — Apache의 기본 페이지
  • There has been a critical error on this website. (한국어 사이트: "이 웹사이트에 치명적인 오류가 있습니다.") — WordPress의 치명적 오류 페이지
  • HTTP Error 500.19 - Internal Server Error — IIS. 점 뒤의 숫자가 이유를 나타냅니다(500.19: 잘못된 구성 데이터).
  • This page isn't working · HTTP ERROR 500 (한국어 Chrome: "페이지가 작동하지 않습니다.") — 500 응답에 자체 페이지가 없을 때 Chrome이 보여 주는 화면
  • Request failed with status code 500 — API를 호출하는 Axios 등 JavaScript 코드
  • 500. That's an error. (한국어 화면: "500. 오류가 발생했습니다.") — Google 자체 오류 페이지

nginx에서 500 Internal Server Error가 날 때

대부분의 경우 nginx는 그 뒤의 앱(PHP-FPM, Node.js, Python)이 반환한 500을 그대로 전달할 뿐입니다. PHP-FPM이라면 PHP 자체의 오류 메시지가 nginx 로그에 남습니다. nginx가 직접 500을 만드는 경우도 몇 가지 있습니다. 오류 로그에서 찾아야 할 줄은 다음과 같습니다.

nginx 오류 로그 줄의미
FastCGI sent in stderr: "PHP message: PHP Fatal error: …"PHP가 크래시됨. 메시지에 파일과 줄 번호가 나옵니다(PHP-FPM의 오류는 nginx 로그에 기록됨)
rewrite or internal redirection cycle while internally redirecting to …try_files나 rewrite 규칙이 nginx 내부에서 자기 자신으로 되돌아가는 루프. 존재하지 않는 /index.html 같은 대체 경로가 흔한 원인입니다(브라우저가 따라가는 루프라면 대신 ERR_TOO_MANY_REDIRECTS가 표시됨)
open() "/etc/nginx/.htpasswd" failed (13: Permission denied)nginx가 auth_basic 비밀번호 파일을 읽을 수 없음(파일이 없으면 대신 403)
pwritev() "/var/lib/nginx/body/…" failed (28: No space left on device)nginx가 업로드나 큰 POST 요청을 디스크에 버퍼링하지 못함: 디스크가 가득 찼거나 쓸 수 없는 임시 폴더
(해당 요청에 대한 기록 없음)Node.js나 Python 앱이 500을 반환했고 nginx는 그대로 전달함: 그 앱 자체의 로그를 확인하세요
bash
# What did nginx log?
sudo tail -n 50 /var/log/nginx/error.log

# Look for loops in the loaded config
sudo nginx -T | grep -nE 'try_files|rewrite'

(출처: nginx 소스 코드. 백엔드가 크래시되었거나 과부하 상태라면 500이 아니라 502나 504가 납니다.)

HTTP 오류 500의 주요 원인

500은 수십 가지 서버 측 문제로 발생할 수 있습니다. 흔한 원인은 다음과 같습니다.

  • .htaccess 파일 손상 — 잘못된 지시어 하나, 잘못된 RewriteRule 하나만 있어도 Apache는 그 디렉터리와 그 아래 전체에 500으로 응답합니다.
  • PHP 치명적 오류(Fatal error) — 구문 오류, 처리되지 않은 예외, 정의되지 않은 함수 호출이 스크립트를 멈춥니다.
  • PHP 메모리·시간 제한 — memory_limit(기본값 128M)이나 max_execution_time(30초)을 넘긴 스크립트는 중단됩니다.
  • PHP-FPM 서버의 php_value 줄 — 이 줄은 Apache의 mod_php에서만 동작합니다. PHP-FPM에서는 Apache가 이 줄을 거부하고 500으로 응답합니다.
  • 잘못된 파일 권한 — PHP가 include하는 파일을 읽지 못하거나, suPHP/suEXEC 호스트가 모든 사용자에게 쓰기 권한이 있는 파일(777)을 거부하는 경우입니다. (웹 서버 자체가 읽지 못하는 파일은 403이 됩니다.)
  • 플러그인 또는 테마 — 새로 설치했거나 업데이트한 WordPress, Joomla, Drupal 확장 기능이 사이트 전체를 크래시시킵니다.
  • 데이터베이스 연결 실패 — 잘못된 자격 증명, 멈춘 데이터베이스 서버, 연결 수 초과가 원인입니다.
  • 코어 파일 손상 — 업데이트가 실패했거나 업로드가 중간에 끊긴 뒤에 생깁니다.
  • 디스크 가득 참 — 서버가 로그, 세션, 임시 파일을 쓸 수 없습니다.
  • nginx 자체의 원인 — rewrite 루프, 읽을 수 없는 비밀번호 파일, 실패한 임시 파일 쓰기(대개 디스크 가득 참)입니다. 위의 nginx 섹션을 참고하세요.

방문자를 위한 500 오류 해결 방법

다른 사람의 웹사이트에서 500 오류가 표시된다면, 문제는 해당 서버 측에 있습니다. 여러분의 기기 문제가 아닙니다. 하지만 몇 가지 시도해 볼 수 있는 방법이 있습니다.

  • 1분 뒤 한 번만 새로고침하기 (F5, Mac에서는 Cmd+R). 배포나 재시작이 진행되는 동안에만 나타났다가 사라지는 500이 많습니다.
  • 모두에게 다운되었는지 확인하기 — 사이트 다운 확인은 11곳에서 페이지를 열어 보고, HTTP 헤더 검사는 저희 서버가 받는 정확한 상태 코드를 보여 줍니다.
  • 해당 사이트의 쿠키 삭제하기, 또는 시크릿 창에서 열어 보기. 손상된 세션 쿠키 때문에 일부 앱이 나에게만 모든 페이지에서 오류를 낼 수 있습니다.
  • 나중에 다시 시도하기 — 해결은 서버 쪽에서 해야 하므로 사이트 소유자에게 시간을 주세요.
  • 웹사이트 소유자에게 알리기 — 몇 시간째 계속되면 페이지 주소와 발생 시각을 함께 알려 주세요.

구글에서 "500. That's an error."(500. 오류가 발생했습니다)가 뜰 때

"500. That's an error. There was an error. Please try again later. That's all we know."는 Google 서버가 보내는 기본 500 오류 페이지입니다. 화면 언어가 한국어라면 같은 페이지가 "500. 오류가 발생했습니다. 오류가 발생했습니다. 나중에 다시 시도해 주세요. 다른 원인은 확인할 수 없습니다."로 표시됩니다. Google 계정, Gmail, Google Drive, Google Docs처럼 Google 주소의 여러 서비스가 같은 형식의 오류 페이지를 씁니다.

뜻은 이 글에서 설명한 500과 같습니다. 요청을 처리하던 Google 서버에서 예기치 않은 오류가 났다는 뜻이며, 내 컴퓨터나 인터넷 연결이 고장 났다는 뜻이 아닙니다. 페이지 스스로 "That's all we know."(다른 원인은 확인할 수 없습니다)라고 말하듯 원인은 표시되지 않고, 고치는 것도 Google의 몫입니다. 사용자가 할 수 있는 일은 다음과 같습니다.

  • Google 쪽 장애인지 확인하기: Google Workspace 상태 대시보드에서 Gmail, Google Drive, Google Docs, Google Forms, Google 로그인 등 서비스별 현재 상태와 최근 이슈 기록을 볼 수 있습니다. 이슈가 올라와 있다면 복구될 때까지 기다리는 수밖에 없습니다.
  • 5분 기다린 뒤 새로고침하기: Google Docs 고객센터는 서버 오류 메시지가 나오면 5분간 기다린 후 페이지를 새로고침하라고 안내합니다.
  • 시크릿 창과 확장 프로그램 확인하기: 같은 안내에 따르면 시크릿 창에서 로그인해 열어 보고, 확장 프로그램을 하나씩 사용 중지하면서 문제를 일으키는 것을 찾을 수 있습니다.
  • 나에게만 계속 뜬다면: 인터넷 사용 기록, 쿠키, 캐시된 파일을 삭제하거나(이후 다시 로그인해야 할 수 있음) 다른 브라우저나 기기에서 열어 보세요.

참고: 이 방법들은 내 브라우저 쪽 원인을 걸러 낼 뿐, Google 서버의 오류를 고치지는 못합니다. 대시보드에 이슈가 없는데도 몇 시간씩 이어진다면 해당 서비스의 도움말 커뮤니티에 알리세요. 대시보드에 없는 Google 서비스라면 사이트 다운 확인으로 다른 지역에서도 응답하는지 확인할 수 있습니다.

해결 방법 1: 서버 오류 로그 확인

오류 로그는 500 오류 디버깅에서 가장 중요한 도구입니다. 파일 경로, 줄 번호, 오류 메시지를 포함하여 정확히 무엇이 잘못되었는지 알려줍니다. 다른 작업을 시도하기 전에 항상 로그를 먼저 확인하세요.

bash
# Apache (PHP errors appear here too, as "AH01071: Got error 'PHP message: …'")
sudo tail -n 100 /var/log/apache2/error.log      # Debian/Ubuntu
sudo tail -n 100 /var/log/httpd/error_log        # RHEL/Alma/Rocky

# nginx (PHP errors appear here as "FastCGI sent in stderr")
sudo tail -n 100 /var/log/nginx/error.log

# PHP errors on RHEL-family PHP-FPM
sudo tail -n 100 /var/log/php-fpm/www-error.log

# PHP-FPM process log (pool restarts, pm.max_children)
sudo tail -n 100 /var/log/php8.3-fpm.log         # Debian/Ubuntu

# WordPress debug log (with WP_DEBUG_LOG on)
tail -n 100 /path/to/wordpress/wp-content/debug.log

해결 방법 2: .htaccess 점검 및 복구

손상된 .htaccess 파일은 Apache에서 500 오류가 나는 대표적인 원인입니다. 오타 하나, 서버가 지원하지 않는 지시어 하나, 잘못된 RewriteRule 하나만으로 해당 디렉터리가 통째로 멈춥니다. Apache 오류 로그에는 .htaccess 파일과 문제의 지시어가 기록됩니다. 예: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration.

가장 빠른 테스트 방법은 파일 이름을 임시로 변경하는 것입니다. 파일 이름을 변경한 후 사이트가 정상적으로 로드되면 .htaccess가 원인인 것입니다.

bash
# Rename to disable .htaccess
mv .htaccess .htaccess_backup

# If site loads, regenerate a clean .htaccess
# For WordPress, go to Settings > Permalinks and click Save

해결 방법 3: 파일 권한 수정

권한 때문에 500이 나는 경우는 PHP가 include하는 파일을 읽지 못할 때, 또는 모든 사용자에게 쓰기 권한이 있는 파일을 거부하는 suPHP/suEXEC 호스트일 때입니다. 일반적인 설정은 파일 644, 디렉터리 755입니다. 777은 절대 쓰지 마세요. 보안 위험일 뿐 아니라 suEXEC/suPHP 호스트에서는 그 자체로 500을 일으킵니다.

bash
# Set correct directory permissions
find /path/to/webroot -type d -exec chmod 755 {} \;

# Set correct file permissions
find /path/to/webroot -type f -exec chmod 644 {} \;

# WordPress wp-config.php (extra security; 440 only if the PHP user owns the file or is in its group)
chmod 440 wp-config.php

해결 방법 4: PHP 메모리 및 실행 제한 늘리기

PHP는 메모리 제한이나 최대 실행 시간을 넘긴 스크립트를 중단하고, 방문자에게는 500이 표시됩니다. 기본값인 메모리 128M과 30초는 무거운 페이지에는 부족한 경우가 많습니다.

서버가 실제로 읽는 위치에서 값을 높이세요. PHP-FPM이라면 FPM용 php.ini(예: /etc/php/8.3/fpm/php.ini)를 수정하고 php-fpm을 다시 로드하세요. .user.ini 변경은 적용되기까지 최대 5분이 걸릴 수 있습니다.

bash
# Option 1: php.ini (best)
memory_limit = 256M
max_execution_time = 300

# Option 2: .htaccess (Apache with mod_php only; under PHP-FPM these lines cause a 500)
php_value memory_limit 256M
php_value max_execution_time 300

# Option 3: .user.ini (PHP-FPM and other FastCGI setups)
memory_limit = 256M

# Option 4: wp-config.php (WordPress)
define( 'WP_MEMORY_LIMIT', '256M' );

해결 방법 5: 플러그인 및 테마 비활성화 (CMS)

WordPress, Joomla 또는 다른 CMS를 사용하는 경우, 결함이 있는 플러그인이나 테마가 500 오류의 가장 흔한 원인 중 하나입니다. 가장 빠른 테스트 방법은 모든 플러그인을 한 번에 비활성화한 후 하나씩 다시 활성화하는 것입니다.

bash
# Disable all WordPress plugins (via the file system)
cd /path/to/wordpress/wp-content
mv plugins plugins_disabled

# Or with WP-CLI, without loading the plugin that crashes the site
wp plugin deactivate --all --skip-plugins --skip-themes

# Switch to a default theme (installs it if it was deleted)
wp theme install twentytwentyfive --activate --skip-plugins --skip-themes

# Check WordPress's own files, and reinstall them without touching wp-content
wp core verify-checksums
wp core download --skip-content --force

해결 방법 6: 데이터베이스 연결 확인 및 복구

애플리케이션이 데이터베이스에 연결할 수 없으면 500 오류가 발생할 수 있습니다. 자격 증명이 잘못되었거나, 데이터베이스 서버가 다운되었거나, 테이블이 손상된 경우에 발생합니다.

먼저 설정 파일(WordPress의 경우 wp-config.php, Laravel의 경우 .env)에서 데이터베이스 자격 증명을 확인하세요. 그런 다음 연결을 테스트하고 필요한 경우 손상된 테이블을 복구하세요.

bash
# Test the MySQL connection
mysql -u username -p -h localhost database_name -e "SELECT 1;"

# Check tables (REPAIR only fixes MyISAM/Aria tables; for InnoDB, restore from a backup)
mysqlcheck -u username -p --check --auto-repair database_name

# WordPress: add to wp-config.php, then visit /wp-admin/maint/repair.php
# Remove this line when you're done: the repair page needs no login.
define( 'WP_ALLOW_REPAIR', true );

해결 방법 7: PHP 버전 호환성 확인

이전 PHP 버전용으로 작성된 코드는 새 버전에서 치명적 오류를 낼 수 있습니다(반대의 경우도 마찬가지입니다). PHP 업그레이드 후에는 제거된 함수와 바뀐 동작이 흔한 원인이며, 지원 중단(deprecated) 함수는 알림(notice)만 남깁니다.

사이트가 실제로 쓰는 PHP 버전을 확인하세요. 명령줄의 php -v는 사이트가 쓰는 PHP와 다른 버전을 보여 줄 수 있으므로, 호스팅 패널이나 임시 phpinfo() 페이지에서도 확인하세요.

bash
# Command-line PHP (may differ from the site's PHP-FPM)
php -v

# PHP-FPM versions installed (Debian/Ubuntu)
ls /etc/php/

# Modules loaded in the command-line PHP
php -m

해결 방법 8: 디스크 공간 확인

서버의 디스크 공간(또는 inode)이 바닥나면 로그, 임시 파일, 세션 데이터를 쓸 수 없어 요청이 500으로 실패하기 시작합니다.

bash
# Check disk space, and inodes (they can run out too)
df -h
df -i

# What's using the space?
sudo du -sh /var/log /tmp

# Free space without deleting the log you're reading
sudo find /var/log -name "*.gz" -mtime +14 -delete
sudo journalctl --vacuum-size=200M

500 vs 502 vs 503 vs 504: 차이점은?

핵심 차이: 500 = 서버 내부에서 고장 남. 502 = 프록시가 백엔드로부터 잘못된 응답을 받음. 503 = 서버는 살아 있지만 바쁨. 504 = 프록시가 기다리다 포기함. 서버가 반환하는 정확한 상태 코드는 DNS Robot의 HTTP 헤더 검사로 확인할 수 있습니다.

502가 뜬다면 애플리케이션은 정상이고 문제는 프록시와 앱 사이에 있을 수 있습니다. 이 경우는 502 Bad Gateway 가이드에서 다룹니다.

코드이름의미흔한 원인
500Internal Server Error서버나 앱이 처리되지 않은 예외나 잘못된 설정 같은 예기치 않은 오류를 만남PHP 치명적 오류, 잘못된 .htaccess, 메모리 부족
502Bad Gateway프록시가 백엔드로부터 잘못된 응답을 수신PHP-FPM 크래시, 백엔드 미실행, 소켓 종료
503Service Unavailable서버가 일시적으로 과부하 상태이거나 유지보수 중트래픽 급증, 계획된 유지보수, 리소스 한도
504Gateway Timeout프록시가 백엔드 응답을 기다리다 타임아웃느린 데이터베이스 쿼리, 장시간 실행 스크립트, 응답 없는 업스트림

500 오류가 SEO에 미치는 영향

Google 문서는 다음과 같이 설명합니다(Google 크롤러 문서).

  • 크롤링이 느려집니다. 5xx 오류가 나면 Google은 그 사이트의 크롤링 속도를 오류를 반환하는 URL 수에 비례해 낮춥니다.
  • 색인된 페이지는 처음에는 유지됩니다. 이미 색인된 URL은 한동안 유지되지만, 계속 서버 오류를 반환하는 URL은 색인에서 삭제됩니다.
  • 회복은 점진적입니다. 서버가 다시 2xx로 응답하면 Google은 크롤링을 점차 늘립니다.
  • 계획된 다운타임에는 503을 쓰세요. 하루나 이틀 정도라면 Retry-After 헤더와 함께 503을 보내(Google) 일시적인 중단으로 읽히게 하세요(503 가이드).

500 오류를 예방하는 방법

예방이 디버깅보다 항상 낫습니다. 웹사이트에서 500 오류의 위험을 최소화하기 위한 모범 사례를 소개합니다.

  • 가동 시간 모니터링 설정 — UptimeRobot이나 Pingdom 같은 도구를 사용하여 1~5분마다 사이트를 확인하세요. 500 오류 발생 시 즉시 알림을 받을 수 있습니다.
  • 변경 사항은 항상 스테이징에서 테스트 — 프로덕션에 직접 배포하지 마세요. 플러그인 업데이트, PHP 업그레이드, 설정 변경은 스테이징 환경에서 먼저 테스트하세요.
  • 버전 관리(Git) 사용 — 모든 변경 사항을 커밋하면 하나의 명령으로 잘못된 배포를 즉시 되돌릴 수 있습니다.
  • 적절한 오류 처리 구현 — 데이터베이스 쿼리와 API 호출을 try-catch 블록으로 감싸세요. 모든 오류에 대해 전체 스택 트레이스를 서버 측에 기록하세요.
  • 디스크 공간 및 서버 리소스 모니터링 — 디스크 사용량 80% 초과, 높은 CPU 사용률, 메모리 부족 시 알림을 설정하세요.
  • 소프트웨어 최신 상태 유지 — 오래된 CMS 버전, 플러그인, 서버 소프트웨어에는 크래시를 유발하는 알려진 버그가 포함되어 있습니다.
  • 자동 백업 유지 — 복원 절차를 정기적으로 테스트하세요. 한 번도 테스트하지 않은 백업은 백업이 아닙니다.
  • PHP 제한 값을 적절히 설정 — memory_limit와 max_execution_time을 기본값이 아닌 실제 워크로드에 맞게 설정하세요.
  • CI/CD 파이프라인 사용 — 배포 전에 테스트를 자동화하세요. 테스트가 실패하면 배포가 진행되지 않아야 합니다.

페이지가 반환하는 상태 코드 확인하기

DNS Robot의 무료 HTTP 헤더 검사는 저희 서버에서 원하는 URL을 요청해 정확한 상태 코드와 응답 헤더를 보여 줍니다. 500이 맞는지, 어느 서버가 보냈는지 확인할 수 있습니다.

출처

  1. RFC 9110 §15.6.1: 500 Internal Server Error, IETF
  2. HTTP status codes and Google's crawlers, Google
  3. ngx_http_core_module.c (rewrite or internal redirection cycle), nginx
  4. Pause or disable a website, Google
  5. ngx_http_auth_basic_module.c (403 vs 500), nginx

자주 묻는 질문

HTTP 오류 500이란 무엇인가요?

서버가 요청을 처리하다 예기치 않은 문제를 만나 끝내지 못했다는 뜻입니다. 서버 쪽에서 무언가가 고장 났다는 포괄적인 오류이며, 500 자체는 무엇이 문제인지 알려 주지 않습니다. 자세한 내용은 사이트의 오류 로그에 있습니다.

RFC 9110은 500 Internal Server Error를 어떻게 정의하나요?

15.6.1절은 이렇게 정의합니다. "The 500 (Internal Server Error) status code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request." 서버가 요청을 처리하지 못하게 하는 예기치 않은 상황을 만났다는 뜻입니다. RFC 9110(2022년 6월)은 현재의 HTTP 의미론(semantics) 표준입니다.

500 Internal Server Error는 어떻게 해결하나요?

먼저 서버 오류 로그(Apache, nginx, PHP-FPM 또는 앱 자체의 로그)를 읽으세요. 그다음 흔한 원인을 차례로 확인하세요: .htaccess 파일, PHP 메모리·시간 제한, 최근 업데이트한 플러그인이나 테마, 파일 권한, 데이터베이스 연결, 남은 디스크 공간.

방문자로서 500 오류가 제 잘못인가요?

거의 그렇지 않습니다. 서버 측 오류입니다. 1분 뒤 한 번만 새로고침하고, 계속되면 모두에게 다운되었는지 확인하세요. 드물게 손상된 세션 쿠키가 원인인 경우에는 해당 사이트의 쿠키를 삭제하면 도움이 됩니다.

nginx의 500 Internal Server Error는 무슨 뜻인가요?

대개 nginx 뒤의 앱(PHP, Node.js, Python)이 500을 반환했고 nginx가 그대로 전달했다는 뜻입니다. PHP-FPM이라면 원인이 nginx 자체의 오류 로그에 "FastCGI sent in stderr"로 기록됩니다. nginx가 직접 500을 만드는 경우로는 rewrite 루프, 읽을 수 없는 auth_basic 파일, 실패한 임시 파일 쓰기(대개 디스크 가득 참) 등이 있습니다.

500 오류와 503 오류의 차이점은 무엇인가요?

500은 무언가가 예기치 않게 고장 났다는 뜻입니다. 503은 과부하나 유지보수 때문에 서버가 지금은 일부러 요청을 받지 않는다는 뜻이며, Retry-After 헤더로 언제 다시 시도할지 알려 줄 수 있습니다. 계획된 유지보수에는 503을 보내세요.

500 오류가 Google 순위에 영향을 미치나요?

짧은 오류는 크게 문제되지 않습니다. Google은 5xx 오류를 보면 크롤링을 늦추고 색인된 페이지를 한동안 유지하지만, 계속 서버 오류를 반환하는 URL은 결국 색인에서 삭제됩니다. 오래가는 500은 빨리 고치세요.

WordPress에서 500 오류가 발생하는 원인은 무엇인가요?

대개 PHP를 크래시시키는 플러그인이나 테마, 손상된 .htaccess 파일, PHP 메모리 제한, 업데이트 실패로 불완전하게 남은 코어 파일, 데이터베이스 연결입니다. WordPress는 "There has been a critical error on this website."(한국어 사이트: "이 웹사이트에 치명적인 오류가 있습니다.")를 표시하고 관리자에게 이메일을 보내는 경우가 많습니다.

"Request failed with status code 500"은 무슨 뜻인가요?

JavaScript HTTP 라이브러리인 Axios의 오류 메시지로, 코드가 호출한 API가 500으로 응답했다는 뜻입니다. 문제는 그 API 서버 쪽에 있습니다. API가 보낸 자체 메시지는 error.response.data에서 확인하고, 직접 운영하는 API라면 그 API의 로그를 확인하세요.

특정 페이지에서만 500 오류가 발생하는 이유는?

일부 페이지만 실패한다면 원인은 그 페이지 뒤의 코드나 데이터에 있습니다. 손상된 데이터베이스 행, 누락된 include 파일, 특정 템플릿에서만 실행되는 플러그인 등입니다. 오류 로그에 파일과 줄 번호가 나옵니다.

작성자 소개

Shaik Vahid

DNS Robot 창립자. Vahid는 수년간 웹 호스팅 지원 업무를 하며 고객의 도메인, DNS 레코드, SSL 인증서, 이메일 전송 문제를 해결했습니다. DNS Robot의 도구를 만들고, 사람들이 실제로 겪는 오류를 바탕으로 이 가이드를 씁니다.

HTTP 헤더 검사

HTTP 응답 헤더 분석 및 보안 헤더 등급 평가