2016-07-26 3 views
1

Итак, мы создаем веб-приложение на PHP, и мы пытаемся сделать запросы к внешнему API. Проблема в том, что мы получаем ошибку скручивания:Ошибка скручивания: нет маршрута к хосту

cURL error 7: Failed to connect to external.api.com port 443: No route to host

Немного фона сейчас.

  • Мы делаем запросы, используя Guzzle.
  • Мы находимся на Apache, который работает на Linux-машине, и мы также используем SSL.
  • API также использует SSL, поэтому порт 443 в сообщении об ошибке.
  • HTTP-запросы включают сертификат для аутентификации.

Мне удалось запустить его в двух разных средах разработки, но не на производственном. Я подозреваю, что проблема связана с конфигурацией Apache, как если бы мы не сделали ее доступной для запросов на определенный IP или порт. Я не знаю, как это проверить. Я читал, что мне, возможно, придется изменить файл/etc/network/interface, но я не нашел никакой информации о том, что там писать.

Я также прочитал, что мне нужно выполнить $ netstat -rn ответы, но я не уверен, что посмотреть там.

EDIT:

не могу даже сделать простой запрос получить без каких-либо параметров, и ничего. Все же я могу сделать запросы к https://google.com и https://facebook.com. Будут писать больше в нескольких.

+2

Это обычно проблема межсетевого экрана. Некоторые корпоративные среды даже блокируют исходящий трафик в производственных зонах. –

+0

@JeffPuckettII '$ sudo ufw status' неактивен. –

ответ

1

netstat -aln | grep 443 покажет, слушает ли ваш веб-сервер на этом порту.

В зависимости от того, на каком веб-сервере вы установили свой файл конфигурации, для сайта будет установлено значение /etc/nginx/sites-available/default, /etc/nginx/sites-available/yourSite, /etc/nginx/nginx.conf или некоторые другие аналогичные пути для apache.

Везде, где он находится, ваш конфигурационный файл должен содержать что-то вроде следующего:

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; 
} 

После изменения этого файла убедитесь, что sudo service nginx reload или sudo service nginx restart (или команды относительного апача).

или sudo nginx -t поможет с отладкой конфигурационного файла.

Смежные вопросы