[php] Nginx PHP CORS 설정

이 블로그 포스트에서는 Nginx 서버에서 PHP 애플리케이션에 대한 CORS (Cross-Origin Resource Sharing) 설정을 어떻게 구성하는지에 대해 살펴볼 것입니다.

CORS란 무엇인가?

CORS는 웹 애플리케이션에서 다른 출처의 리소스에 접근하는 메커니즘을 제어하는 방법을 말합니다. 웹 애플리케이션이 동일 출처 정책(SOP)을 우회하여 웹 페이지에서 제한 없이 리소스를 요청하고 공유할 수 있도록 허용하는 기능입니다.

Nginx에 CORS 헤더 추가하기

Nginx 서버에 CORS 헤더를 추가하여 클라이언트와의 상호작용을 가능하게 할 수 있습니다. 다음은 Nginx 설정 파일에 CORS 헤더를 추가하는 예제입니다.

server {
    listen 80;
    server_name your_domain.com;
    
    location / {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        
        # PHP 처리 지시문 추가
        try_files $uri $uri/ /index.php$is_args$args;
    }
    
    # PHP 스크립트를 처리할 위치 추가
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

위의 예제에서 add_header 지시문은 CORS 헤더를 추가하는데 사용됩니다. 이를 통해 클라이언트와의 상호작용이 허용됩니다.

PHP 애플리케이션에서 CORS 처리

PHP 애플리케이션에서 CORS 처리를 위해 PHP 코드 내부에서 헤더를 설정할 수 있습니다. 다음은 PHP에서 CORS 헤더를 설정하는 예제입니다.

<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: DNT, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Range");

위의 코드는 PHP 스크립트에서 CORS 헤더를 설정하는 방법을 보여줍니다.

이제 Nginx 서버에서 PHP 애플리케이션에 대한 CORS 설정을 구성하는 방법에 대해 알아보았습니다. 이를 통해 클라이언트와의 상호작용을 허용하고 보안을 유지할 수 있습니다.

참고 자료