"fastcgi_split_path_info"๋ฅผ ์ฌ์ฉํ์ฌ URL์ ์ผ๋ถ๋ฅผ ๋ถ๋ฆฌํ๊ณ PATH_INFO ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํ์ง๋ง ๋จผ์ "try_files $fastcgi_script_name"์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์กด์ฌ๋ฅผ ํ์ธํ์ง ์๊ณ PHP-FPM์ผ๋ก ์ ๋ฌํ๋ nginx ๊ตฌ์ฑ์์ ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ง์์ด ๋๋ "if (!-f $)" ๊ตฌ์ฑ document_root$fastcgi_script_name)". ๋ฌธ์ ๋ ๋ํ
์์น ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
๋ค์ ํ์ด์ง์์ ๋ฐฐํฌ ํคํธ์ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ถ์ ํ ์ ์์ต๋๋ค.
try_files $fastcgi_script_name =404;
ํ์ผ์์ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ์
๋๋ค.
fastcgi_split_path_info ์ง์๋ฌธ์ด ๊ฐํ ๊ตฌ๋ถ ์ ๊ท์์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก ๋ถํ ์ ์ง์ ํ๋ ๊ฒฝ์ฐ(์๋ฅผ ๋ค์ด ๋ง์ ์์์ "^(.+?\.php)(/.*)$" ์ฌ์ฉ์ ์ ์ํจ) ๊ณต๊ฒฉ์๋ ๋ค์์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋น ๊ฐ์ PATH_INFO ํ๊ฒฝ ๋ณ์์ ๊ธฐ๋ก๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ์คํ์ด ๊ณ์ ์งํ๋ฉ๋๋ค.
ํน์ ๋ฐฉ์์ผ๋ก ํ์ํ๋ URL์ ์์ฒญํจ์ผ๋ก์จ ๊ณต๊ฒฉ์๋ path_info ํฌ์ธํฐ๋ฅผ "_fcgi_data_seg" ๊ตฌ์กฐ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ์ด ๋ฐ์ดํธ์ XNUMX์ ์ฐ๋ฉด "char* pos"๊ฐ ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ์ด์ ์ ์์นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํ ํฌ์ธํฐ. ๋ค์ FCGI_PUTENV๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ ์ ์๋ ๊ฐ์ผ๋ก ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์๋๋ค. ์ง์ ๋ ๋ฉ๋ชจ๋ฆฌ์๋ ๋ค๋ฅธ FastCGI ๋ณ์์ ๊ฐ๋ ์ ์ฅ๋๋ฉฐ, ํด๋น ๋ฐ์ดํฐ๋ฅผ ์์ฑํจ์ผ๋ก์จ ๊ณต๊ฒฉ์๋ ๊ฐ์์ PHP_VALUE ๋ณ์๋ฅผ ์์ฑํ๊ณ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru