404, когда Sagepay пытается связаться с URL-адресом уведомления Cartthrob в Nginx

https://xxx.xxx.xxx/themes/third_party/ cartthrob/Библиотека/extload.php

отлично работает, но

https://xxx.xxx.xxx/themes/ THIRD_PARTY/cartthrob/Библиотека/extload.php/sage_s

возвращает 404.

Моя конфигурация сервера nginx выглядит следующим образом:

server {
  listen 443 default_server ssl;
  ssl_certificate /etc/nginx/ssl/xxx_xxx_xxx.pem;
  ssl_certificate_key /etc/nginx/ssl/xxx_xxx_xxx.key;
  server_name xxx.xxx.xxx;
  root /sites/xxx_xxx_xxx/public_html;

  access_log /var/log/nginx/xxx_xxx_xxx-access.log;
  error_log  /var/log/nginx/xxx_xxx_xxx-error.log info;

  location/{
    index index.php;
    try_files $uri $uri/ @ee;
  }

  location @ee {
    rewrite ^(.*) /index.php?$1 last;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php5;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}
3
попытайтесь добавить после error_log следующие строки: location /themes/third_party/cartthrob/lib/extload.php {rewrite ^ (. *) /themes/third_party/cartthrob/lib/extload.php?$1 last; }
добавлено автор Nikos Steiakakis, источник

2 ответы

попробуйте следующую конфигурацию:

server {
  listen 443 default_server ssl;
  ssl_certificate /etc/nginx/ssl/xxx_xxx_xxx.pem;
  ssl_certificate_key /etc/nginx/ssl/xxx_xxx_xxx.key;
  server_name xxx.xxx.xxx;
  root /sites/xxx_xxx_xxx/public_html;

  access_log /var/log/nginx/xxx_xxx_xxx-access.log;
  error_log  /var/log/nginx/xxx_xxx_xxx-error.log info;

  location /themes/third_party/cartthrob/lib/extload.php { 
    rewrite ^(.*) /themes/third_party/cartthrob/lib/extload.php?$1 last; 
  }

  location/{
    index index.php;
    try_files $uri $uri/ @ee;
  }

  location @ee {
    rewrite ^(.*) /index.php?$1 last;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php5;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}
3
добавлено
Да, это отлично работает - спасибо!
добавлено автор David Tchepak, источник

Ensure your firewalls allow outbound Port 443 (HTTPS only) & inbound ports 443 (& optionally 80 HTTP) access in order to communicate with our servers (on Test/Live).

Проверьте отсутствие проблемы DNS, если вы не получили сообщение с уведомлением (Sage Pays) Notification.

Каковы основные различия между двумя NotificationURL?

При подтверждении сообщения Sage Pays, когда вы отправляете Status, StatusDetail и RedirectURL, убедитесь, что вы очистили буфер ответа, чтобы удалить код заголовка, комментарии или HTML, поскольку Sage Pay Server ожидает, что «Status =» будет первым символом в ответе.

1
добавлено
Здравствуй! Спасибо, что ответили, но эта проблема почти наверняка связана с моей конфигурацией nginx. Я надеюсь, что у кого-то еще будет такая же проблема, и я смогу сообщить, как правильно настроить nginx. Все остальное работает нормально, включая Cartthrob и Sagepay.
добавлено автор David Tchepak, источник
nginx_ru
nginx_ru
930 участник(ов)

Сообщество пользователей nginx, новости, обсуждения конфигураций, вопросы, программирование на конфигах