Nginx Magento 配置不起作用,安装时出现 404

Nginx Magento 配置不起作用,安装时出现 404

这是我的堆栈:Nginx 1.7、MariaDB 10、PHP 5.6(FPM)和 CentOS 7。我使用 Centminmod 安装上述软件。

我为 magento 安装创建了一个 vhost。将文件复制到根文件夹,并尝试通过访问域来运行安装脚本,但它重定向到 domain.com/index.php/install/ 并出现 404 错误。

这是我的 nginx vhost 配置文件中的内容:

server {
   listen 80;
   server_name domain.com;
   rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
 }

 server {
   listen 80 default;
    ## SSL directives might go here
   server_name www.domain.com *.domain.com; ## Domain is here twice so server_name_in_redirect will favour the www
   root /home/nginx/domains/domain.com/public/;

   location / {
       index index.html index.php; ## Allow a static html file to be shown first
       try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
       expires 30d; ## Assume all files are cachable
   }

   ## These locations would be hidden by .htaccess normally
   location ^~ /app/                { deny all; }
   location ^~ /includes/           { deny all; }
   location ^~ /lib/                { deny all; }
   location ^~ /media/downloadable/ { deny all; }
   location ^~ /pkginfo/            { deny all; }
   location ^~ /report/config.xml   { deny all; }
   location ^~ /var/                { deny all; }

   location /var/export/ { ## Allow admins only to view export folder
       auth_basic           "Restricted"; ## Message shown in login window
       auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
       autoindex            on;
   }

   location  /. { ## Disable .htaccess and other hidden files
       return 404;
   }

   location @handler { ## Magento uses a common front handler
       rewrite / /index.php;
   }

   location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
       rewrite ^(.*.php)/ $1 last;
   }

   location ~ .php$ { ## Execute PHP scripts
       if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

       expires        off; ## Do not cache dynamic content
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_param  HTTPS $fastcgi_https;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
       fastcgi_param  MAGE_RUN_TYPE store;
       include        fastcgi_params; ## See /etc/nginx/fastcgi_params
   }
 }

有人能找出问题所在吗?谢谢。

答案1

添加这个:

location ~ ^(.+\.php)(.*)$
{
    root /usr/share/nginx/html;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
}

为我解决了这个问题。

注意:您可能需要更改fastcgi_pass为适合您的任何内容。

相关内容