title: Multiple versions of PHP through Nginx in Docker
body: <p>I run two docker containers for PHP5.6:</p>
  
  <pre><code>docker run --name php5 \
      -v /html1:/var/www/html/site1 \
      -d -p 9001:9000 php:5.6-fpm
  </code></pre>
  
  <p>And for PHP7:</p>
  
  <pre><code>docker run --name php7 \
    -v /html2:/var/www/html/site2 \
    -d -p 9000:9000 php:7-fpm
  </code></pre>
  
  <p>I run Docker container with Nginx:</p>
  
  <pre><code>docker run --name nginx-cache \
    -v /nginx.conf:/etc/nginx/nginx.conf \
    -v /nginx/html1:/var/www/html/site1 \
    -v /nginx/html2:/var/www/html/site2 \
    -v /sites-enabled:/etc/nginx/sites-enabled/ \
    --link php5 --link php7 -d -p 9999:80 nginx
  </code></pre>
  
  <p>with <code>nginx.conf</code>:</p>
  
  <pre><code>user  nginx;
  worker_processes  1;
  
  error_log  /var/log/nginx/error.log warn;
  pid        /var/run/nginx.pid;
  
  events {
      worker_connections  1024;
  }
  
  http {
      sendfile on;
  
      gzip              on;
      gzip_http_version 1.0;
      gzip_proxied      any;
      gzip_min_length   500;
      gzip_disable      "MSIE [1-6]\.";
      gzip_types        text/plain text/xml text/css
                        text/comma-separated-values
                        text/javascript
                        application/x-javascript
                        application/atom+xml;
      gzip_disable      "msie6";
  
  
      ##
      # Basic Settings
      ##
  
      server_names_hash_bucket_size 64;
  
      tcp_nopush on;
      tcp_nodelay on;
      keepalive_timeout 65;
      types_hash_max_size 2048;
      client_body_buffer_size 128k;
  
      include /etc/nginx/mime.types;
      default_type application/octet-stream;
  
      ##
      # Logging Settings
      ##
  
      access_log /var/log/nginx/access.log;
      error_log /var/log/nginx/error.log;
  
      ##
      # Virtual Host Configs
      ##
  
      include /etc/nginx/conf.d/*.conf;
      include /etc/nginx/sites-enabled/*;
  
  }
  </code></pre>
  
  <p>with site1 config:</p>
  
  <pre><code>server {
          listen 80 default_server;
  
          server_name site1;
  
          root /var/www/html/site1/;
          index index.php index.html index.htm default.html default.htm;
  
          fastcgi_buffers 8 16k;
          fastcgi_buffer_size 32k;
          fastcgi_read_timeout 180;
  
          location ~ \.php$ {
              fastcgi_pass  php5:9001;
              fastcgi_index index.php;
              include fastcgi_params;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              fastcgi_param SERVER_NAME $server_name;
          }
  }
  </code></pre>
  
  <p>and site2 config:</p>
  
  <pre><code>server {
          listen 80;
  
          server_name site2;
  
          root /var/www/html/site2/;
          index index.php index.html index.htm default.html default.htm;
  
          fastcgi_buffers 8 16k;
          fastcgi_buffer_size 32k;
          fastcgi_read_timeout 180;
  
          location ~ \.php$ {
              fastcgi_pass  php7:9000;
              fastcgi_index index.php;
              include fastcgi_params;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              fastcgi_param SERVER_NAME $server_name;
          }
  }
  </code></pre>
  
  <p>This request to site2 is 200 OK with proper response:</p>
  
  <pre><code>curl -X GET \
    http://localhost:9999/index.php \
    -H 'host: site2'
  </code></pre>
  
  <p>And for the request to site1:</p>
  
  <pre><code>curl -X GET \
    http://localhost:9999/index.php \
    -H 'host: site1'
  </code></pre>
  
  <p>In the Nginx container logs I always see:</p>
  
  <blockquote>
    <p>2017/04/26 21:18:27 [error] 7#7: *1 connect() failed (111: Connection
    refused) while connecting to upstream, client: 172.17.0.1, server:
    site1, request: "GET /index.php HTTP/1.1", upstream:
    "fastcgi://172.17.0.3:9001", host: "site1"</p>
  </blockquote>
  
  <p>Any ideas how to troubleshoot this would be highly appreciated. </p>