2017-04-03 18 views
4

私はPrestashopプロジェクト用のドッカー環境を作ろうとしています。私はそれがほとんど動作しているが、何らかの理由で、バックオフィスにアクセスできない - それは私にERR_TOO_MANY_REDIRECTSエラーを与える。DockerでPrestashopを実行しているときのバックオフィスのERR_TOO_MANY_REDIRECTS

shop_urlテーブルのURLを変更し、PS_SHOP_DOMAINとPS_SHOP_DOMAIN_SSLを無駄に変更しました。フレンドリーなURLを無効にしようとしましたが、SSLを有効/無効にしましたが、問題は解決しません。

私はウェブサーバ用のカスタムイメージを使用しています:

luken-wodby-nginx-prestashop 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/ 

ドッキングウィンドウ-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; 
    } 
} 

ウェブサイトは正常に動作し、バックオフィスだけがアクセスできず、ERR_TOO_MANY_REDIRECTSエラーが発生します。

何が間違っている可能性がありますか?

答えて

1

を行う必要がありますが、私は、問題の原因を発見しました。 wodby/nginx nginxコンテナは、カスタムfastcgi_paramsファイルを使用しています。このファイルは不思議なことに、fastcgi_param QUERY_STRING $query_string;行を持っていません(nginxに付属の元のファイルとは対照的です)。これは、あなたがインターネット上で見つけることができるいくつかの準備ができているnginxテンプレートでは、デフォルトでは互換性がありません。それはスクリプトに渡されないクエリパラメータによって明らかになります(私はここで問題を作りました:https://github.com/wodby/nginx/issues/3)。それが実行するコントローラを知らないので

は今、重要な controllerパラメータを持っていないPrestaShopののバックオフィスは、フリークアウト。コントローラがない場合は、デフォルトのコントローラをパラメータとしてURLへのリダイレクトを行いますが、Prestashopには「コントローラ」パラメータがないため、リダイレクトループで終了し、 ERR_TOO_MANY_REDIRECTSとなります。

このための修正は、スクリプトにクエリパラメータを渡すためにあなたのnginxの設定でfastcgi_param QUERY_STRING $query_string;を追加することです。

1

は、私が覚えている限りでは、インストール時に、PrestaShopのは、それが問題のthoses種類の原因となるのに対し、完全なフォルダのアクセス許可をする必要があります。例えばので

chmod 777 -R /var/www/html 

ジョブ

+0

残念ながら、それは役に立たなかった:(。 –

関連する問題