2017-05-25 10 views
1

多くのアドバイスを試みましたが、動作させることはできません。 NGINX-PHPの協力でdocker-compose.ymlファイルを作成したいと思います。ここでPHPとNginx Dockerの画像が一緒に動作するようにする

は私が作ったものだ。

version: "2" 

services: 
    nginx: 
    image: nginx:latest 
    restart: always 
    ports: 
     - "80:80" 
     - "443:443" 
    links: 
     - php 
    depends_on: 
     - php 
    expose: 
     - "80" 
     - "443" 
    volumes: 
     - ./www:/var/www/html 
     - ./config/nginx/site.conf:/etc/nginx/sites-available/default 
     - ./config/nginx/site.conf:/etc/nginx/sites-enabled/default 

    php: 
    image: php:7-fpm 
    restart: always 
    volumes: 
     - ./www:/var/www/html 

Docker画像がエラーなしで実行されますが、私はNginxにアクセスしたいとき、私はこれを取得:

nginxのへようこそ!

このページが表示された場合、nginx Webサーバーは正常にインストールされており、 と動作しています。さらなる構成が必要です。

オンラインマニュアルおよびサポートについては、nginx.orgを参照してください。 商業用サポートはnginx.comで利用できます。

nginxをご利用いただき、ありがとうございます。

私は両方のイメージにログインし、ボリュームをチェックしようとしました。また、phpnginxからpingできるかどうか確認しました。

server { 
    server_name ncp-docker; 

    listen 80; 
    index index.php index.html index.htm; 
    root /var/www/html; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 

    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     include fastcgi_params; 
     fastcgi_pass php:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param PATH_INFO $fastcgi_path_info; 
    } 

    location ~ /(inc|uploads/avatars) { 
     deny all; 
    } 
} 
+1

現在のバージョンであるバージョン3を構成するように更新する必要がある可能性があります。 –

答えて

4

サーバー構成をデフォルトに不履行されているので、デフォルトのnginxのバーチャルホストを上書きする必要があります:

- ./config/nginx/site.conf:/etc/nginx/conf.d/default.conf 
すべてが

はここに私のNginxサイト構成です...罰金のようです

これを使用して、サイト対応ボリュームとサイト使用可能ボリュームの両方を削除してください。

2

これは間違っている可能性があります。

nginx設定では、PHPを直接実行してはいけません。 PHPは別のコンテナで実行されています。

代わりに、PHPアプリケーションのnginxリバースプロキシが必要です。このような

何か:


server { 
    listen 80; 
    server_name yourdomain.example.com; 
    location/{ 
     proxy_pass http://php:9000/; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 
    } 
} 

おそらくあなたが/変更を追加する必要があるいくつかの詳細があります...しかし、これはnginxの中で、私はそれを必要と&ペーストをカットし、基本的なリバースプロキシです

+1

ポート9000はHTTPポートではなく、CGI通信ですので、proxy_passにはできません。そのため、彼はfastcgi_passを実装しています。 – Robert

+0

ああ - 私が決して覚えることのできないphpの詳細:) thanks @Robert! –

1

ロバートは、デフォルトのnginx仮想ホストを上書きする必要があると提案しましたが、nginxコンテナ用の追加のDockerfileを追加して、ボリュームの使用を避けることもできます。 docker-compose.ymlではimage: nginx:latestbuild: ./nginx/に変更する必要があります。このようなDockerfileの何かがトリックを行う必要がありますについて:

FROM nginx:latest 
RUN rm /etc/nginx/conf.d/default.conf 
ADD conf.d/ /etc/nginx/conf.d/ #Replace the default nginx virtual host 

私はあなたが簡単にHTTPS接続の例のSSL証明書のコンテナに多くのものを追加することができます上のように、後でこれを簡単に見つける:

ADD ssl/ /etc/nginx/ssl/  

これにより、ボリュームを節約でき、将来のnginx設定のための生活が楽になります。

関連する問題