因此,我们正在使用PHP构建Web应用程序,并且我们正在尝试向外部API发出请求。问题是我们收到卷曲错误:
cURL错误7:无法连接到external.api.com端口443:没有到主机的路由
现在有点背景知识。
我设法让它在两个不同的开发环境中运行但不在生产环境中运行。我怀疑问题在于Apache的配置,好像我们还没有能够向某些IP或端口发出请求。我不知道如何检查它。我已经读过,我可能需要更改文件/ etc / network / interface但我还没有找到有关该处写什么的任何信息。
我还读过我必须运行$ netstat -rn
才能找到答案,但我不知道该怎么看。
修改
甚至无法在没有任何参数和任何内容的情况下制作简单的获取请求。 但我可以向https://google.com和https://facebook.com提出请求。会写一些更多。
答案 0 :(得分:2)
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
(或相对的apache命令)。
sudo service nginx configtest
或sudo nginx -t
将有助于调试配置文件。
答案 1 :(得分:0)
经过大量调试和测试我所有的代码后,我联系了该服务,该服务是我尝试使用的API。
他们是欧洲服务提供商,并且已将欧洲IP列入白名单。我们的生产服务器在美国,当他们将我们的IP列入白名单之后,一切正常。
答案 2 :(得分:0)
搜索了大约一整天后,我发现问题出在iptables 规则。 就我而言,解决方案是按如下方式恢复 iptables 规则:
创建一个包含以下文本的文件:
*过滤器
:输入接受[10128:1310789]
:前向接受[0:0]
:输出接受[9631:1361545]
提交*
运行命令:sudo iptables-restore < /path/to/your/previously/created/file
如果是 iptables 问题,这有望解决您的问题。
答案 3 :(得分:0)
它对我来说适用于 apache (httpd)
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
答案 4 :(得分:-1)
今天我遇到了同样的问题
我使用curl http://localhost:8080
检查我的tomcat是否可以工作
这是错误Failed to connect to ::1: No route to host
最后我要解决它。显然,这是您的Apache tomcat的问题。 因此,您必须首先检查日志。如果您发现您的端口已被使用,请找到该路线并将其杀死。然后重新启动您的tomcat。
通过端口netstan -lnp | grep port
查找路线
杀死路线:kill -9 ****