TIL NGINX 11/24/2022

엽토군·2022년 11월 24일
0

TIL

목록 보기
5/12

대부분의 요즘 PHP 웹애플리케이션은 흔히 "index.php 죽이기"라고 부르는 걸 (해야) 한다. NGINX의 경우 재수가 없으면 이게 안 된다.

# /config/nginx/sites-conf/default.conf.sample

location / {
    try_files $uri $uri/ /index.html /index.php$is_args$args =404;
}

location ~ ^(.+\.php)(.*)$ {
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
}

linuxserver/nginx 이미지의 기본 설정은 이렇게 생겼다.
작동하지 않는 게 이상해 보인다.
근데 작동을 안 한다.
정확히는, 이 이미지로 Slim 4 앱을 하나 띄웠는데, index.php까지만 php-fpm에 의해 실행되고, 나머지 라우트는 index.php 파일이 다운로드된다. -_-;

$app->get('/', Index::class);

알아보니, 애초에 위와 같은 PHP측 라우팅이 작동하질 않고 있었다. 첫 화면이 뜨는 이유는 기가 막힌 우연으로 첫화면 = GET / = index.php였기 때문에 뜬 것이었다. -_-;;

자 그러면 이걸 어떻게 해결하느냐? 오만 삽질을 한 끝에 여기서 성공했다.

location / {
    index index.php;
    try_files $uri $uri/ /index.php$is_args$args;
}

location ~ ^(.+\.php)(.*)$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
}

차이점이 보이는가?
location / 블록에서 =404를 잘라서 location php로 옮겼다. 그게 다다.
근데 그랬더니 된다. -_-;;;

솔직히 교훈이 뭔지, 내가 대체 여기서 뭘 얻어가야 하는지 모르겠다.
=404에 대해 공부해야 하나.
-.,-a 긁적~~,,

profile
4년차 PHP 개발자입니다.

0개의 댓글