404 quando o Sagepay tenta entrar em contato com o URL de notificação do Cartthrob no Nginx

https://xxx.xxx.xxx/themes/third_party/ cartthrob/lib/extload.php

funciona bem, mas

https://xxx.xxx.xxx/themes/ third_party/cartthrob/lib/extload.php/sage_s

retorna um 404.

Minha configuração do servidor nginx é a seguinte:

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
tente adicionar depois do error_log as próximas linhas: location /themes/third_party/cartthrob/lib/extload.php {reescreva ^ (. *) /themes/third_party/cartthrob/lib/extload.php?$1 por último; }
adicionado o autor Nikos Steiakakis, fonte

2 Respostas

tente a próxima configuração:

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
adicionado
Sim, isso funciona muito bem - obrigado!
adicionado o autor David Tchepak, fonte

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).

Verifique se não há um problema de DNS se não recebermos a nossa publicação de Notificação (Sage Pays).

Quais são as principais diferenças entre os dois NotificationURLs?

Ao confirmar a postagem de notificação do Sage Pays, quando você enviar o Status, StatusDetail e RedirectURL, limpe o buffer de resposta para remover o código de cabeçalho, comentários ou HTML, pois o Sage Pay Server espera que "Status =" seja o primeiro caractere na resposta.

1
adicionado
Oi! Obrigado por responder, mas este problema é quase certamente relacionado à minha configuração nginx. Eu estou esperando que alguém tenha tido o mesmo problema e será capaz de me informar como configurar o nginx corretamente. Tudo o resto parece estar funcionando bem - incluindo Cartthrob e Sagepay.
adicionado o autor David Tchepak, fonte