在Docker中运行Prestashop时,后台重定向过多

在Docker中运行Prestashop时,后台重定向过多,docker,prestashop,prestashop-1.6,Docker,Prestashop,Prestashop 1.6,我正在尝试为一个项目创建一个docker环境。我让它几乎工作,但出于某种原因,后台无法访问-它给了我一个错误太多的重定向错误 我更改了shop\u url表中的url,并将PS\u shop\u DOMAIN和PS\u shop\u DOMAIN\u SSL更改为no-vail。我试图禁用友好URL,启用/禁用SSL,但问题仍然存在 我正在为Web服务器使用自定义映像: nginx prestashop luken wodbyDockerfile: FROM wodby/nginx:1.10

我正在尝试为一个项目创建一个docker环境。我让它几乎工作,但出于某种原因,后台无法访问-它给了我一个错误太多的重定向错误

我更改了
shop\u url
表中的url,并将PS\u shop\u DOMAIN和PS\u shop\u DOMAIN\u SSL更改为no-vail。我试图禁用友好URL,启用/禁用SSL,但问题仍然存在

我正在为Web服务器使用自定义映像:

nginx prestashop luken wodby
Dockerfile:

FROM wodby/nginx:1.10

ENV WODBY_DIR_FILES /mnt/files

RUN rm /etc/gotpl/default-vhost.conf.tpl && \
    mkdir -p $WODBY_DIR_FILES && \
    mkdir -p /var/log/nginx

COPY prestashop.conf.tpl /etc/gotpl/
COPY init/* /docker-entrypoint-init.d/
docker-compose.yml:

version: "2"

services:
  mariadb:
    image: wodby/mariadb:10.1-2.0.0
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: organic
      MYSQL_USER: prestashop
      MYSQL_PASSWORD: prestashop
    volumes:
      - ./database:/docker-entrypoint-initdb.d
    ports:
      - "33060:3306"

  php:
    image: wodby/php:5.6-2.0.0
    environment:
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      PHP_XDEBUG: 1
      PHP_XDEBUG_DEFAULT_ENABLE: 1
    volumes:
      - ./:/var/www/html

  nginx:
    image: luken-wodby-nginx-prestashop:latest
    depends_on:
      - php
    environment:
      NGINX_BACKEND_HOST: php
      NGINX_SERVER_NAME: prestashop.docker.localhost
      NGINX_SERVER_ROOT: /var/www/html/public_html
    volumes:
      - ./:/var/www/html
    ports:
      - "8000:80"

  mailhog:
    image: mailhog/mailhog
    ports:
      - "8002:8025"
Nginx虚拟主机配置:

server {
    listen 80;
    server_name {{ getenv "NGINX_SERVER_NAME" "prestashop" }};
    root {{ getenv "NGINX_SERVER_ROOT" "/var/www/html/" }};
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    index index.php index.html;

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

    location = /robots.txt {
        auth_basic off;
        allow all;
        log_not_found off;
        access_log off;
    }

    # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 1;
    gzip_buffers 16 8k;
    gzip_http_version 1.0;
    gzip_types application/json text/css application/javascript;

    rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
    rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$1$2$3.jpg last;
    rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
    rewrite ^/c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ /img/c/$1$2$3.jpg last;
    rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ /img/c/$1$2.jpg last;
    rewrite ^/images_ie/?([^/]+).(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last;
    rewrite ^/order$ /index.php?controller=order last;
    location /panel_adm/ {                           #Change this to your admin folder
        if (!-e $request_filename) {
            rewrite ^/.*$ /panel_adm/index.php last; #Change this to your admin folder
        }
    }
    location / {
        if (!-e $request_filename) {
            rewrite ^/.*$ /index.php last;
        }
    }

    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.*)$;
        try_files $uri =404;
        fastcgi_keep_conn on;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass backend;  #Change this to your PHP-FPM location
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}
网站运行正常,只有后台无法访问,并且错误太多,重定向错误


有什么问题吗?

据我所知,在安装时,Prestashop需要具有完整的文件夹权限,而这会导致此类问题

例如:

chmod 755 -R /var/www/html
我应该做这项工作。请不要忘记在安装后将权限更改为更安全的权限,如:

chmod 644 -R /var/www/html
chmod 755 -R cache app var modules img

(在@abkrim安全评论后更新)

我找到了问题的原因。
wodby/nginx
nginx容器正在使用一个自定义的
fastcgi_参数
文件。奇怪的是,这个文件没有
fastcgi\u param QUERY\u STRING$QUERY\u STRING行(与nginx附带的原始文件不同)。这使得它在默认情况下与您可以在internet上找到的一些现成的nginx模板不兼容。它通过没有传递到脚本的查询参数来显示自己(我在这里为它创建了一个问题:)

现在,Prestashop的后台办公室没有一个重要的
控制器
参数,因为它不知道运行哪个控制器。如果没有控制器,它将使用默认控制器作为参数重定向到URL,但由于Prestashop从来没有可用的“控制器”参数,因此它以重定向循环结束,导致
错误太多\u重定向


解决方法是添加
fastcgi\u param QUERY\u STRING$QUERY\u STRING将查询参数传递给脚本。

不幸的是,它没有帮助:(.如果Prestashop需要在/var/www/html上使用chmod 777-R,那么唯一要做的就是在一眨眼之间将其删除。这只能是一个非常糟糕的建议,而且在我个人看来,对Stackoverflow给出这样的建议对我来说是没有帮助的。另一个对社区来说是危险的响应。chmod 777是非常糟糕的解决方案,只适用于在模式模块中使用php而不是fcgi或php fpm的非专业服务器。@abkrim这实际上是Prestashop安装的一个要求。我完全同意不应该是这样的事实。请在盲目向下投票之前提供另一个。MattLoye只有在服务器使用陈旧过时的mod php。如果服务器使用现代php fpm、cgi、fcgi在您的服务器上使用php,那么使用chmod 777不仅是被禁止的,而且是不好的做法,不安全,在许多服务器上甚至会出现错误。遗憾的是,程序员今天仍然在谈论777,而实际上它应该说的是“XXX目录必须对执行PHP的“用户”具有执行和写入权限”,当他们读到一些关于管理和系统安全性的内容时,也许你理解了否决权。祝你好运。