Bereitstellung von zwei Rails-Anwendungen von einem Nginx-Server aus

Bereitstellung von zwei Rails-Anwendungen von einem Nginx-Server aus

Ich habe versucht, zusätzlich zu diesem Artikel einige Tutorials zu befolgen: Zwei verschiedene Anwendungsserver in einem Nginx konfigurieren?

Aber ich konnte mein Ziel nicht erreichen, qa.example.com vom qa_server und staging2.example.com vom staging_server aus bereitzustellen. Dies sind meine für Nginx-Sites aktivierten Dateien:

Inhalt von (Staging-Server):

upstream puma_staging {
  server unix:/home/jenkins/apps/staging_app/shared/tmp/sockets/staging-app-puma.sock fail_timeout=0;
}

server {
  server_name staging2.example.com;
  listen 80;
  return 301 https://$host$request_uri;
}

server {
  server_name staging2.example.com;
  listen 443 default_server;
  root /home/jenkins/apps/staging_app/current/public;

  try_files $uri/index.html $uri @puma_staging;

  location @puma_staging {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://puma_staging;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
  ssl on;
  ssl_certificate "some cert";
  ssl_certificate_key "some key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'something here';
}

Inhalt von (qa_server):

upstream puma_qa {
  server unix:/home/jenkins/apps/qa_app/shared/tmp/sockets/qa-app-puma.sock fail_timeout=0;
}

server {
  server_name qa.example.com;
  listen 80;
  return 301 https://$host$request_uri;
}

### QA START ###

server {
  server_name qa.example.com;
  listen 443;

  root /home/jenkins/apps/qa_app/current/public;

  try_files $uri/index.html $uri @puma_qa;

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_redirect off;
    proxy_read_timeout 150s;
    proxy_pass http://puma_qa;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
  ssl on;
  ssl_certificate "some cert";
  ssl_certificate_key "some key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'something here';
}

Es scheint, dass mein Staging-Server einwandfrei funktioniert. Ich kann die Protokolle verfolgen und sehen, wie sich die Protokolldatei wie folgt bewegt tail -f /home/jenkins/apps/staging_app/current/log/staging.log.

Meine QA-App (die in einer Staging-Umgebung läuft) schreibt nicht in eine korrekte Protokolldatei. Wenn ich sie so anklicke, tail -f /home/jenkins/apps/qa_app/current/log/staging.logpassiert nichts. Das heißt, die App qa.example.com funktioniert, aber ich weiß nicht, von wo sie bereitgestellt wird.

Habe versucht, die Nginx-Konfiguration mit zu validieren nginx -t, alles sieht gut aus. Habe versucht, Nginx im Debugmodus auszuführen, damit ich herausfinden kann, von wo genau die Anfragen weitergeleitet/bedient werden, so wie hier service nginx stop && service nginx-debug start.

Habe die Zugriffs- (/var/log/nginx/access.log) und Fehlerprotokolle (/var/log/nginx/error.log) verfolgt, weiß aber nicht einmal, wie das Debugprotokoll aussehen soll.

Eine weitere Information ist, dass mein Hostname staging2.example.com ein A-Eintrag ist, der auf die IP meines Servers verweist, und mein qa.example.com ein CNAME ist, der auf staging2.example.com verweist.

Habe ich hier offensichtliche Fehler gemacht? Oder was sollte ich als nächstes versuchen?

Aktualisierung gemäß Kommentaren (Hinzufügen der Ausgabe von nginx -T):

nginx -T
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
user www-data;
worker_processes  2;

error_log  /var/log/nginx/error.log debug;
pid        /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {

  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

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

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout  65;

  gzip  on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_vary off;
  gzip_types text/plain text/css application/x-javascript text/xml application/xml application/rss+xml application/atom+xml text/javascript application/javascript application/json text/mathml;
  gzip_min_length  1000;
  gzip_disable     "MSIE [1-6]\.";

  server_names_hash_bucket_size 64;
  types_hash_max_size 2048;
  types_hash_bucket_size 64;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}

# configuration file /etc/nginx/mime.types:

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    application/font-woff                            woff;
    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}

# configuration file /etc/nginx/conf.d/default.conf:
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

# configuration file /etc/nginx/sites-enabled/qa_server:
upstream puma_qa {
  server unix:/home/jenkins/apps/qa_app/shared/tmp/sockets/qa-app-puma.sock fail_timeout=0;
}

server {
  server_name qa.example.com;
  listen 80;
  return 301 https://$host$request_uri;
}

### QA START ###

server {
  server_name qa.example.com;
  listen 443;

  root /home/jenkins/apps/qa_app/current/public;

  try_files $uri/index.html $uri @puma_qa;

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_redirect off;
    proxy_read_timeout 150s;
    proxy_pass http://puma_qa;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
  ssl on;
  ssl_certificate "some cert";
  ssl_certificate_key "some key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'something here';
}

### QA END ###

# configuration file /etc/nginx/sites-enabled/staging_server:
upstream puma_staging {
  server unix:/home/jenkins/apps/staging_app/shared/tmp/sockets/staging-app-puma.sock fail_timeout=0;
}

server {
  server_name staging2.example.com;
  listen 80;
  return 301 https://$host$request_uri;
}

server {
  server_name staging2.example.com;
  listen 443 default_server;
  root /home/jenkins/apps/staging_app/current/public;

  # location ^~ /assets/ {
  #   gzip_static on;
  #   expires max;
  #   add_header Cache-Control public;
  # }

  try_files $uri/index.html $uri @puma_staging;

  location @puma_staging {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://puma_staging;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
  ssl on;
  ssl_certificate "some cert";
  ssl_certificate_key "some key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'something here';
}

verwandte Informationen