Nginx配置SCRIPT_FILENAME

时间:2015-06-12 14:39:38

标签: php nginx yii rewrite stderr

我使用apache进行旧配置。现在我想将所有内容重新配置为nginx + php-fpm。但是SCRIPT_FILENAME有一些问题。 我的项目存储在文件夹/ www中。它有3个文件夹。

  • 静态图像的第一个文件夹。 (img)应该在site.com/images/[1.png]
  • 上工作
  • 自定义php脚本的第二个文件夹(php)sloud work on site.com/php/[qweqwe]
  • 第三次为Yii项目做准备。(yii)应该在site.com/yii /
  • 上工作

他们有自定义重写。

这是我的nginx服务器配置:

server {
  listen 80;

  server_name site.com;

  root /www;

  location ~* .(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc|html)$ {
    add_header Pragma "public";
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
    log_not_found off;
    expires   360d;
  }
  location /php {
    root /www/php;
    if (!-e $request_filename){
      rewrite ^(.*)$ /php/api2.php;
    }
    location ~* \.php$ {
        #rewrite ^/(.*)/$ /$1 permanent;
        include        /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_index  index.php;
        fastcgi_pass   pool;
    }
  }

  location /yii {
    root /www/yii;
    rewrite (.*)\.small\.([^\.]+)$ /sfad/thumb.php?img=$1.$2 break;
    rewrite agent[0-9]+site[0-9]+[a-z]*/(.*) /$1;
    location ~* \.php$ {
        #rewrite ^/(.*)/$ /$1 permanent;
        include        /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_index  index.php;
        fastcgi_pass   pool;
        }
    try_files $uri /index.php?$args;
  }
}

但每次我都有错误

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

1 个答案:

答案 0 :(得分:1)

我已经成功了)help谢谢史蒂夫克莱因。 我的最终配置:

server {
  listen 80;
  server_name site.com;


  access_log /var/log/nginx/olimpic-access.log main buffer=16k;
  error_log  /var/log/nginx/olimpic-dev-error.log warn;
  root /www;

  location = /favicon.ico {
    log_not_found off;
    access_log off;
  }

  location = /robots.txt  { access_log off; log_not_found off; }
  location ~ /\.          { access_log off; log_not_found off; deny all; }
  location ~ ~$           { access_log off; log_not_found off; deny all; }
  location ~ /.ht         { deny all; access_log off; log_not_found off; }
  location ~ /yii/(protected|framework|nbproject) { deny all; access_log off; log_not_found$
  location ~ /yii/themes/\w+/views { deny all; access_log off; log_not_found off; }

  location ~* .(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc|html)$ {
    rewrite (.*)\.small\.([^\.]+)$ /yii/sfad/thumb.php?img=$1.$2;
    add_header Pragma "public";
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
    log_not_found off;
    expires   360d;
  }

  location ~* /yii/agent[0-9]+site[0-9]+[a-z]*/(.*) {
    rewrite agent[0-9]+site[0-9]+[a-z]*/(.*) /yii/$1;
    try_files $uri $uri/ /yii/index.php?$args;
  }

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

  location /php/ {
    try_files $uri /php/api2.php;
  }

  location ~* \.php$ {
    rewrite ^/php/(.*)$ /php/api2.php break;
    include        /etc/nginx/fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param  PATH_INFO $fastcgi_path_info;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index  index.php;
    fastcgi_pass   php-workers;
  }
}