2016-03-28 26 views
1

私はapacheのプロキシとしてnginxを使ってdebian上にphp soap server api setupを持っています。 SOAPコールは、HTTP経由で正常に動作しますが、php soap api call over https

<VirtualHost *:8081> 
    ServerName <my sub domain> 
    ServerAlias www.<my sub domain> 


    SSLEngine on 
    SSLCertificateFile /etc/nginx/ssl/dev/wildcard.<dm name>-chained.crt 
    SSLCertificateKeyFile /etc/nginx/ssl/dev/wildcard.<dm name>.net.key 

    #SSLProtocol ALL -SSLv2 -SSLv3 
    #SSLVerifyClient none 
    #SSLVerifyDepth 1 
    #SSLHonorCipherOrder On 

    #SSLCipherSuite  

    DocumentRoot /var/www/<project folder> 
    <Directory /var/www/<project folder>> 
     Options FollowSymLinks -Indexes 
     AllowOverride All 
     Order Allow,Deny 
     Allow from all 
     SSLRequireSSL 
    </Directory> 
</VirtualHost> 

を次のように

server { 

    listen 443 ssl; 
    server_name <sub domain name>; 

    ssl on; 
    ssl_certificate /etc/nginx/ssl/dev/wildcard.<dm name>-chained.crt; 
    ssl_certificate_key /etc/nginx/ssl/dev/wildcard.<dm name>.key; 

    location/{ 
    proxy_redirect off; 
    proxy_pass https://localhost:8081; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    } 

} 
    server { 
    listen 80; 
    # return 301 https://$host$request_uri; 
    server_name <sub domain name>; 
    location/{ 
    proxy_pass http://<server ip>:8080; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    } 
} 

とApacheの設定が

を次のように私は、Apache ports.confを変更したで次のようにHTTPSを介して

nginxの構成はありません

NameVirtualHost *:8080 
    Listen 8080 

<IfModule mod_ssl.c> 
    NameVirtualHost *:8081 
    # # If you add NameVirtualHost *:443 here, you will also have to change 
    # # the VirtualHost statement in /etc/apache2/sites-available/default-ssl 
    # # to <VirtualHost *:443> 
    # # Server Name Indication for SSL named virtual hosts is currently not 
    # # supported by MSIE on Windows XP. 
    Listen 8081 
</IfModule> 

<IfModule mod_gnutls.c> 
    Listen 8081 
</IfModule> 

ここにed。 私のローカルでPHPクライアントを使用し、URLがhttpの場合はsoap呼び出しを行いますが、URLがhttpsの場合は機能しません 有用なエラーメッセージも表示されません。

答えて

0

あなたのドメインの証明書はlocalhostには有効ではないので、Nginxはそれを拒否します。とにかくlocalhostに接続するときにSSLを必要としないので、NginxプロキシのHTTPSリスナーをApacheのHTTPリスナーにするだけです。

+0

ありがとうございました。私はまだそれが動作しない変更を行いました。 nginx HTTPSリスナーconfを proxy_pass http:// :8080に変更しました。 私のブラウザでhttpsで問題なく のsoapファイルにアクセスできますが、単純なphp soapクライアントコールは機能しません。 $ vLocation = 'https:// ';$ client =新しいSoapClient( ""、配列( "location" => $ vLocation、 "trace" => 1、 'cache_wsdl' => WSDL_CACHE_NONE )); $ vFunctions = $ client - > __ getFunctions();私が行うとき 同じPHP石鹸アプリケーションは、私はバーチャルホストの設定へのアクセスを持っていない別のサーバーでホストされているが – manoveg

+0

作品 opensslのs_client -connect 私が手-ssl3 'CONNECTED( 00000003) 140735331525456:エラー:1409E0E5:SSLルーチン:SSL3_WRITE_BYTES:SSLハンドシェイクの失敗:s3_pkt.c:598: '私は私のnginxの設定 ssl_protocolsのSSLv3 TLSv1のTLSv1.1 TLSv1.2に次き 。 – manoveg