2015-06-12 2 views
1

У меня есть старая конфигурация с apache. Теперь я хочу переконфигурировать все для nginx + php-fpm. Но есть некоторые проблемы с SCRIPT_FILENAME. Мои проекты хранятся в папке/www. В нем есть 3 папки.Конфигурация Nginx SCRIPT_FILENAME

  • 1-я папка для статических изображений. (img) Должно работать на сайте site.com/images/[1.png]
  • Вторая папка для пользовательских php-скриптов (php) Sloud work на site.com/php/[qweqwe]
  • 3-я тема для проекта 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 
+0

Я не уверен, но эти вложенные блоки расположение кажется плохой идеей. Если вы еще этого не сделали, я рекомендую прочитать эти [советы по устранению неполадок NGINX] (http://wiki.nginx.org/Pitfalls). Это действительно помогло мне ускориться на «NGINX». Кроме того, вы можете создать очень простой серверный блок, убедиться, что он работает для одного из ваших вариантов использования, а затем оттуда расширяется. –

+0

Изменить корень документа на реальный. измените эту строку '' fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; '' '' fastcgi_param SCRIPT_FILENAME/www $ fastcgi_script_name; '' – Kavin

ответ

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; 
    } 
} 
Смежные вопросы