【问题标题】:Nginx configuration SCRIPT_FILENAMENginx 配置 SCRIPT_FILENAME
【发布时间】:2015-08-28 14:59:17
【问题描述】:

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

  • 静态图像的第一个文件夹。 (img) 应该在 site.com/images/[1.png]
  • 上工作
  • 用于自定义 php 脚本 (php) 的第二个文件夹在 site.com/php/[qweqwe] 上运行良好
  • Yii 项目的第 3 档。(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

【问题讨论】:

  • 我不确定,但那些嵌套的位置块似乎是个坏主意。如果您还没有这样做,我建议您阅读这些NGINX troubleshooting tips。这真的帮助我加快了NGINX 的速度。此外,您可能希望创建一个非常简单的服务器块,验证它是否适用于您的一个用例,然后从那里扩展。
  • 将文档根目录更改为真实路径。将此行 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 更改为 fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;

标签: php nginx yii rewrite stderr


【解决方案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;
  }
}

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2017-07-25
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多