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.log
passiert 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';
}