鍍金池/ 問(wèn)答/PHP  Linux  網(wǎng)絡(luò)安全/ nginx location代碼塊下放了個(gè)子目錄,里面的index.php報(bào)40

nginx location代碼塊下放了個(gè)子目錄,里面的index.php報(bào)404

背景描述

我想在api.xxx.com域名下放個(gè)項(xiàng)目接口,以子目錄的形式。比如api.xxx.com/friends,這個(gè)子目錄下都是friends這個(gè)項(xiàng)目的接口。

相關(guān)代碼

我的對(duì)應(yīng)的nginx配置如下:
/etc/nginx/conf.d/api.conf

server {
    server_name api.worldispoweredbymywife.top;
    root /var/www/api;

    location /friends/ {
        alias /var/www/api/friends/public/;
        index index.php;
        try_files $uri =404;
    }
    location ~ /friends/.+\.php$ {
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME /var/www/api/friends/public$fastcgi_script_name;
    }

    error_page 404 /404.html;
    location /404.html {
        root /usr/local/nginx/html/;
    }

    error_page 500 502 503 504 /50x.html;
    location =/50x.html {
        root /usr/local/nginx/html/;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

 # managed by Certbot

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/api.worldispoweredbymywife.top/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.worldispoweredbymywife.top/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = api.worldispoweredbymywife.top) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name api.worldispoweredbymywife.top;
    listen 80;
    return 404; # managed by Certbot


}

當(dāng)前問(wèn)題

訪問(wèn)https://api.worldispoweredbymywife.top/friends會(huì)顯示nginx自帶的404頁(yè)面。
ps:
1.我在/var/www/api/friends/public/下放了個(gè)index.html然后通過(guò)https://api.worldispoweredbymywife.top/index.html是可以訪問(wèn)的
2.我把friends的兩個(gè)location注釋掉,直接通過(guò)https://api.worldispoweredbymywife.top/friends/public/index.php是可以訪問(wèn)的。

求大神解救~

回答
編輯回答
墻頭草
location ^~ /qr {
        alias /Users/whj/web/qr/public;
        try_files $uri $uri/ @qr;
        index index.php index.html index.htm;

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/tmp/php-cgi.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME /Users/whj/web/qr/public/index.php;
        }
    }

    location @qr {
        rewrite /qr/(.*)$ /qr/index.php?/$1 last;
    }

這是我localhost下子目錄qr的nginx配置,你可以參考下

2018年6月11日 07:55