鍍金池/ 問(wèn)答/PHP  Linux/ 對(duì) nginx location 配置的一個(gè)疑問(wèn)

對(duì) nginx location 配置的一個(gè)疑問(wèn)

之前配置nginx的時(shí)候,一直都在復(fù)制黏貼,沒(méi)有仔細(xì)看。仔細(xì)看的時(shí)候發(fā)現(xiàn)自己什么都不懂。

server {
    listen 80;
    server_name foo.com;

    root /path;
    index index.html index.htm index.php;

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

    location ~ \.php$ {
        try_files $uri =404;

        include fastcgi.conf;
        fastcgi_pass 127.0.0.1:9000;
    }
}

上面的配置,我的理解是,請(qǐng)求都會(huì)匹配到 location / ,如果能找得到文件就輸出,沒(méi)找到就會(huì)把uri參數(shù)一起傳到index.php。
而下面的規(guī)則則是匹配以php結(jié)尾的請(qǐng)求,它會(huì)被傳到php-fpm監(jiān)聽(tīng)的9000端口處理。

對(duì)于類似 xxx.com/module/cotroller/method 這樣的url會(huì)匹配到 location / 再到index.php。但nginx本身是不能處理執(zhí)行php程序的,還必須把index.php交由php-fpm處理才是???但上面的配置中并沒(méi)有看到類似的下一步。

難道匹配完 location / 之后,index.php 會(huì)再次匹配到 location .php 么?

回答
編輯回答
好難瘦

可以去看看Nginx的匹配優(yōu)先級(jí):Nginx Location匹配規(guī)則

2017年3月2日 14:53
編輯回答
茍活

是的,index.php會(huì)重新去匹配location .php {},然后把請(qǐng)求交給PHP-FPM處理

2018年4月7日 00:09