web-dev-qa-db-fra.com

Erreur de boucle: aucune route vers l'hôte

Nous créons donc une application Web en PHP et nous essayons de faire des requêtes à une API externe. Le problème est que nous obtenons une erreur curl:

erreur cURL 7: échec de la connexion au port external.api.com 443: aucune route vers l'hôte

Un peu d'histoire maintenant.

  • Nous faisons des demandes en utilisant Guzzle .
  • Nous hébergeons sur Apache, qui fonctionne sur une machine Linux et nous utilisons également SSL.
  • L'API utilise également SSL, donc le port 443 dans le message d'erreur.
  • Les requêtes HTTP incluent un certificat d'authentification.

J'ai réussi à le faire fonctionner sur deux environnements de développement différents mais pas sur celui de production. Je soupçonne que le problème est dans la configuration d'Apache, comme si nous ne l'avons pas rendu disponible pour effectuer des requêtes vers certaines IP ou certains ports. Je ne sais pas comment le vérifier. J'ai lu que je devrais peut-être changer le fichier/etc/network/interface mais je n'ai trouvé aucune information sur ce qu'il faut y écrire.

J'ai également lu que je dois exécuter $ netstat -rn pour les réponses mais je ne sais pas trop quoi regarder là-bas.

MODIFIER:

Impossible même de faire une simple requête get sans aucun paramètre ni rien. Pourtant, je peux faire des demandes à https://google.com et https://facebook.com . J'écrirai plus dans quelques-uns.

9
Mihkel Allorg

netstat -aln | grep 443 indiquera si votre serveur Web écoute sur ce port.

Selon le serveur Web sur lequel vous avez installé votre fichier de configuration, le site sera à /etc/nginx/sites-available/default, /etc/nginx/sites-available/yourSite, /etc/nginx/nginx.conf ou d'autres chemins similaires pour Apache.

Où qu'il se trouve, votre fichier de configuration doit contenir quelque chose comme ceci:

server {
listen 80;
listen 443 ssl;
server_name yourSite.com;
root "/path/to/yourSite";

index index.html index.htm index.php;

charset utf-8;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

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

access_log off;
error_log  /path/to/webserver/youSite.error.log error;

sendfile off;

client_max_body_size 100m;

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_intercept_errors off;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}

location ~ /\.ht {
    deny all;
}

ssl_certificate     /path/to/yourSite.crt;
ssl_certificate_key /path/to/yourSite.key;
}

Après avoir modifié ce fichier, assurez-vous de Sudo service nginx reload ou Sudo service nginx restart (ou la commande relative Apache).

Sudo service nginx configtest ou Sudo nginx -t vous aidera à déboguer le fichier de configuration.

1
Ciuc lpgfmk