前提・実現したいこと
PHPのcURLでWeb APIを叩いて出力結果を表示したいのですが、
プログラムを実行するサーバ(以下A)とWeb API提供元(以下B)に
HTTPのバージョンの違いがあるのでGoogle Chrome で以下のエラーが発生します。
発生している問題・エラーメッセージ
POST https://*** net::ERR_SPDY_PROTOCOL_ERROR
(A)がHTTP2導入済み、(B)がHTTP2未導入です。(A)のHTTP2をオフにすると、エラーは発生しません。
HTTP2をオフにする以外の対処法がありましたらご教授ください。
ソースコード
PHP
1<?php 2 $url = "(B)のURL"; 3 $ch = curl_init(); 4 curl_setopt( $ch, CURLOPT_URL, $url ); 5 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); 6 curl_setopt( $ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 ); 7 $result = curl_exec( $ch ); 8 curl_close(); 9 echo $result; 10?>
(A)のサーバ環境
OS:CentOS 7.4
Webサーバ:nginx 1.13.8
SSL:OpenSSL 1.0.2k
他:PHP 7.2、cURL 7.57.8
1/29追記
(A)のnginxの設定
■nginx.conf
conf
1user nginx; 2worker_processes 1; 3 4error_log /var/log/nginx/error.log warn; 5pid /var/run/nginx.pid; 6 7events { 8 worker_connections 1024; 9} 10 11http { 12 include /etc/nginx/mime.types; 13 default_type application/octet-stream; 14 15 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 16 '$status $body_bytes_sent "$http_referer" ' 17 '"$http_user_agent" "$http_x_forwarded_for"'; 18 19 access_log /var/log/nginx/access.log main; 20 21 sendfile on; 22 #tcp_nopush on; 23 24 resolver 127.0.0.1; 25 26 keepalive_timeout 65; 27 28 #gzip on; 29 brotli on; 30 31 server_tokens off; 32 add_header X-Frame-Options SAMEORIGIN; 33 add_header X-XSS-Protection "1; mode=block"; 34 add_header X-Content-Type-Options nosniff; 35 36 include /etc/nginx/conf.d/vhost.conf; 37 #include /etc/nginx/conf.d/*.conf; 38}
■conf.d/vhost.conf
conf
1server { 2 listen 80 default_server; 3 listen [::]:80 default_server; 4 server_name example.com; 5 root /var/www/html; 6 error_log /var/log/nginx/error.log; 7 access_log /var/log/nginx/access.log main; 8 9 location / { 10 index index.html index.htm index.php; 11 } 12 13 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 14 # 15 location ~ .php$ { 16 fastcgi_pass unix:/var/run/php-fpm/www.sock; 17 fastcgi_index index.php; 18 fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 19 include fastcgi_params; 20 } 21 22 include ssl.conf; 23}
■conf.d/ssl.conf
conf
1# 2# conf.d/ssl.conf 3# 4 5#listen 443 ssl http2; 6listen 443 ssl; 7ssl_session_cache shared:le_nginx_SSL:1m; 8ssl_session_timeout 1440m; 9add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always; 10 11ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 12ssl_prefer_server_ciphers on; 13 14ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES256-SHA256 EDH-RSA-DES-CBC3-SHA"; 15 16ssl_stapling on; 17ssl_stapling_verify on; 18 19if ($scheme != "https") { 20 return 301 https://$host$request_uri; 21} 22ssl_certificate /etc/pki/tls/certs/2017.crt; 23ssl_certificate_key /etc/pki/tls/private/2017.key; 24ssl_trusted_certificate /etc/pki/tls/certs/2017.intermediate;
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/26 07:42