Я переместил свой магазин Magento из Сервер "А" который был на Apache для Сервер "Б" работает NginX.
Скопировал все файлы и папки, экспортировал и импортировал базу данных SQL, изменил файл local.xml, добавив новые сведения о БД, а затем запустил сценарий проверки соединения с БД, который все прошел нормально.
Сервер «А» http://hns.lwea.co.uk/ Сервер "B" http://hotnstylish.co.uk/
Когда я перехожу на адрес hotnstylish.co.uk, я получаю сообщение об ошибке 404 «Default Magento themed»: Страница не найдена.
Примечание: У меня была еще одна установка magento на этом экземпляре nginx ранее, которая работала нормально :(
NginX создает следующие журналы ошибок:
2013/12/01 17:43:43 [error] 5520#0: *105 access forbidden by rule, client: 127.0.0.1, server: 836237.vps-10.com, request: "POST /app/etc/local.xml HTTP/1.1", host: "836237.vps-10.com"
2013/12/01 17:50:38 [error] 5520#0: *108 access forbidden by rule, client: 127.0.0.1, server: 836237.vps-10.com, request: "POST /app/etc/local.xml HTTP/1.1", host: "836237.vps-10.com"
2013/12/01 17:50:40 [error] 5520#0: *111 access forbidden by rule, client: 127.0.0.1, server: 836237.vps-10.com, request: "POST /app/etc/local.xml HTTP/1.1", host: "836237.vps-10.com"
2013/12/01 17:50:43 [error] 5520#0: *113 access forbidden by rule, client: 127.0.0.1, server: 836237.vps-10.com, request: "POST /app/etc/local.xml HTTP/1.1", host: "836237.vps-10.com"
2013/12/01 17:50:45 [error] 5520#0: *115 access forbidden by rule, client: 127.0.0.1, server: 836237.vps-10.com, request: "POST /app/etc/local.xml HTTP/1.1", host: "836237.vps-10.com"
2013/12/01 17:50:48 [error] 5520#0: *117 access forbidden by rule, client: 127.0.0.1, server: 836237.vps-10.com, request: "POST /app/etc/local.xml HTTP/1.1", host: "836237.vps-10.com"
2013/12/01 22:50:22 [error] 5520#0: *143 rewrite or internal redirection cycle while processing "/index.php", client: 92.28.188.240, server: 836237.vps-10.com, request: "GET /index.php/admin/cms_page/index/key/a962fe17df7bb966ff6202585abe3f2f/ HTTP/1.1", host: "836237.vps-10.com", referrer: "http://836237.vps-10.com/index.php/admin/mobile/history/key/1e11fb471a8ce41d1f6c6f54368469ba/"
2013/12/01 22:50:51 [error] 5520#0: *145 rewrite or internal redirection cycle while processing "/index.php", client: 95.211.223.32, server: 836237.vps-10.com, request: "POST /cgi-bin/php/%63%67%69%6E/%70%68%70?%2D%64+%61%6C%75%6F%6E+%2D%64+%6D%6F%64+%2D%64+%73%75%68%6F%6E%3D%6F%6E+%2D%64+%75%6E%63%74%73%3D%22%22+%2D%64+%64%6E%65+%2D%64+%61%75%74%6F%5F%70%72%%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%74%5F%3D%30+%2D%64+%75%74+%2D%6E HTTP/1.1", host: "localhost"
2013/12/01 22:54:02 [error] 5520#0: *146 rewrite or internal redirection cycle while processing "/index.php", client: 23.22.240.96, server: 836237.vps-10.com, request: "HEAD / HTTP/1.1", host: "109.104.94.194"
И следующие журналы доступа:
92.28.188.240 - - [03/Dec/2013:15:33:35 +0000] "GET /admin HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
92.28.188.240 - - [03/Dec/2013:15:38:47 +0000] "GET / HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
92.28.188.240 - - [03/Dec/2013:15:38:50 +0000] "GET /admin HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
92.28.188.240 - - [03/Dec/2013:15:39:58 +0000] "GET /admin HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
92.28.188.240 - - [03/Dec/2013:15:40:02 +0000] "GET / HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
54.194.106.16 - - [03/Dec/2013:15:43:55 +0000] "GET / HTTP/1.1" 404 1627 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"
92.28.188.240 - - [03/Dec/2013:15:48:06 +0000] "GET / HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
92.28.188.240 - - [03/Dec/2013:15:54:30 +0000] "GET / HTTP/1.1" 404 684 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
92.28.188.240 - - [03/Dec/2013:15:54:36 +0000] "GET / HTTP/1.1" 404 683 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
Мой файл vHost выглядит следующим образом:
server {
listen 80 default_server;
server_name www.hotnstylish.co.uk *.hotnstylish.co.uk; ## Domain is here twice so server_name_in_redirect will favour the www
rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
access_log /data/www/public_html/hotnstylish/log/access.log;
error_log /data/www/public_html/hotnstylish/log/error.log;
root /data/www/public_html/hotnstylish/public/;
location / {
include /etc/nginx/mime.types;
root /data/www/public_html/hotnstylish/public/;
index index.html index.htm 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; }
# media
location ~* \.(png|gif|jpg|jpeg|css|js|swf|ico)$ {
root /data/www/public_html/hotnstylish/public/;
access_log off;
expires 30d;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ ^/(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
location /var/export/ { internal; }
location /. { return 404; }
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ $1 last; }
#location ~* .php$ {
#if (!-e $request_filename) { rewrite / /index.php last; }
#expires off;
location ~ ^(.+\.php)(.*)$ {
root /data/www/public_html/hotnstylish/public/;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE default;
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params;
}
}
Будем признательны за любые подсказки ...
Это не проблема nginx.
При доступе к бэкэнду вызывается блочное уведомление о безопасности.
Посмотри на класс Mage_Adminhtml_Block_Notification_Security
:
функция «_canShowNotification» вызывает другую функцию «_isFileAccessible», которая выполняет POST для получения файла «local.xml».
Вот твоя проблема:
location @handler { rewrite / /index.php; }
После перезаписи вы вернетесь к location /
и обратно через try_files
очередной раз. Затем он возвращается к @handler
и вы в бесконечной петле.
Это кажется полностью лишним; просто избавьтесь от этого и добавьте прямо в try_files
.
try_files $uri $uri/ /index.php;
Причина, по которой это происходит, заключается в том, что конфигурация nginx по умолчанию не поддерживает перезапись, необходимую для Magento. В файле конфигурации nginx убедитесь, что в конфигурации вашего сервера указаны следующие параметры.
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}