Linux

如何配置 NGINX 位置以在伺服器的子目錄中提供 Codeigniter RESTful API?

  • September 15, 2017

我有以下目錄結構:

mysite.com
- /api (codeigniter RESTful API Server)
- /app (backbonejs app)

我正在嘗試配置 NGINX 以將 mysite.com/api* 的所有請求指向 api 目錄並使用 Codeigniter 的設置。

如果 CI 在根目錄中,我發現的所有內容都可以正常工作。但是,當您嘗試將其放在子目錄中時,它會失敗。

這是我目前擁有的:

server {
       listen 80;
       server_name local.mysite.com;
       root /Users/me/Sites/mysite;
       autoindex on;
       index index.html index.php;

       location /api {
           try_files $uri $uri/ /api/index.php;

           location ~ \.php$ {
               root /Users/me/Sites/mysite/api;
               fastcgi_pass 127.0.0.1:9000;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
           }


       }



   }

這樣做只會給我一個“找不到文件”錯誤。甚至沒有合適的 nginx 404。如何在伺服器的子目錄中為 CodeIgniter 配置 NGINX?

謝謝!

對於其他試圖解決這個問題但由於還沒有答案而失敗的人,這裡有一個超級簡單的設置:

140     server {
141         listen 80;
142         server_name local.mysite.com;
143         root /Users/me/Sites/mysite;
144         autoindex on;
145         index index.html index.php;
146
147         location /api {
148             try_files $uri $uri/ /api/index.php$args;
149
150         }
151
152         location ~ \.php$ {
153             fastcgi_pass 127.0.0.1:9000;
154             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
155             include fastcgi_params;
156         }
157
158
159
160     }

引用自:https://serverfault.com/questions/873925