Phalcon Nginx設(shè)置

按照phalcon官網(wǎng)的配置,配了一個:

server {
    listen      80;
    server_name localhost.portal;
    root        /var/www/portal/public;
    index       index.php index.html index.htm;
    charset     utf-8;

    location / {
        try_files $uri $uri/ index.php?_url=$uri&$args;
    } 
 
    location /public/ {
        root /var/www/portal;
    } 
    location ^~ /api/ {
       root /var/www/portal;
        rewrite  ^/api/(.*)$ /api/index.php?_url=/$1 last; 
   }
 
    location ~ \.php$ {
        try_files     $uri =404;

        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index /index.php;

        include fastcgi_params;
        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

其他url都能正常訪問,可是訪問api目錄下的文件就會報404,api訪問的目錄依然是全局root目錄:/var/www/portal/public,location里單設(shè)的root:/var/www/portal不生效。原因是:api路徑 rewrite之后,再次訪問生效的是location ~ .php$ {}配置,而這個配置繼承的是全局的root。
修改為:不設(shè)全局的root,放到每個location里自行設(shè)置
把 location ~ .php$ {} 放到每個location里嵌套,就可以正常訪問了。

server {
    listen      80;
    server_name localhost.portal;
    index       index.php index.html index.htm;
    charset     utf-8;
    rewrite_log on;
    access_log  /var/log/nginx/portal_access.log main;
    error_log   /var/log/nginx/portal_error.log notice;

    location / {
        root  /var/www/portal/public;    
        try_files $uri $uri/ /index.php?_url=$uri&$args;
        location ~ \.php$ {
            try_files     $uri =404;

            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index /index.php;

            include fastcgi_params;
            fastcgi_split_path_info       ^(.+\.php)(/.+)$;
            fastcgi_param PATH_INFO       $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }   
    } 
 
    location /public/ {
        root /var/www/portal;
    }
 
    location ^~ /api/  {
        root /var/www/portal;
        rewrite  ^/api/(.*)$ /api/index.php?_url=/$1 last; 
        location ~ \.php$ {
            try_files     $uri =404;

            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index /index.php;

            include fastcgi_params;
            fastcgi_split_path_info       ^(.+\.php)(/.+)$;
            fastcgi_param PATH_INFO       $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
 

    location ~ /\.ht {
        deny all;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,969評論 19 139
  • 上一篇《WEB請求處理一:瀏覽器請求發(fā)起處理》,我們講述了瀏覽器端請求發(fā)起過程,通過DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 81,245評論 21 356
  • 配置運行Nginx服務(wù)器用戶(組) 用于配置運行Nginx服務(wù)器用戶(組)的指令是user,其語法格式為: use...
    吃瓜的東閱讀 4,537評論 0 41
  • 《老男孩Linux運維》筆記 隱藏Nginx軟件版本號 一般來說,軟件的漏洞都和版本有關(guān)。因此要盡量隱藏對訪問用戶...
    Zhang21閱讀 3,699評論 0 28
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,959評論 6 342