대부분의 요즘 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 긁적~~,,