%20auf%20Nginx%20Reverse%20Proxy%20mit%20Angular.png)
Auf dem betreffenden Server läuft Ubuntu 16.04, das eine Angular-Anwendung über einen Reverse-Proxy bereitstellt. Sobald Sie sich mit der Hauptseite verbinden, dauert das Laden nicht bei allen Seiten gleich lange, bei manchen jedoch schon. Nämlich diehttps://meinesite/adminSeite. Auch hier fehlen einige JS-Schaltflächen, die nicht auf der Seite angezeigt werden, obwohl alle anderen Aspekte der Seite angezeigt werden. Unsere Site ist so aufgebaut, dass der Datenverkehr mit einem JS-Skript weitergeleitet wird, aber dies ist eine der Dateien mit einer TTFB von 60 Sekunden! (Die meisten Dateien mit langsamer TTFB sind JS.) Obwohl die gesamte Anwendung ohne Reverse-Proxy nicht funktioniert, kann ich bestätigen, dass dies nicht der Fall ist, wenn dieser nicht aktiviert ist. Darüber hinaus kann es hilfreich sein, hinzuzufügen, dass die TTFB auf der Site nach dem ersten Laden nicht immer 60 Sekunden beträgt, jedoch immer, wenn sie in einem Inkognito-Fenster geladen wird.
nginx.conf
user www-data;
worker_processes 1;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
proxy_cache_path /etc/nginx-cache levels=1:2 keys_zone=backcache:8m max_size=50m;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
upstream mysite {
server [::]:1337;
}
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
#Looked at 12/4
#fastcgi_buffers 8 16k;
#fastcgi_buffer_size 32k;
#client_max_body_size 24M;
#client_body_buffer_size 128k;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
sites-enable/default.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.net-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.net-0001/privkey.pem; # managed by Certbot
root /home/admin_user/root;
index index.html index.htm index.nginx-debian.html;
server_name mysite.net;
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
location / {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
proxy_cache backcache;
proxy_cache_bypass $http_cache_control;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://localhost:1337;
}
}
Antwort1
Okay, Ihrer Nachricht zufolge denke ich, dass Sie eine kopierte und eingefügte Nginx-Konfiguration für einen Reverse-Proxy haben.
Ihre Konfiguration hat die folgende Strophe:
location / {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
proxy_cache backcache;
proxy_cache_bypass $http_cache_control;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://localhost:1337;
}
Dies bedeutet: Für alles unter /
senden Sie die Anfrage an die localhost:1337
Adresse, die in Ihrem Kommentar angegeben ist, die wahrscheinlich nicht existiert. Nginx hat ein Timeout von 60 Sekunden, daher gehe ich davon aus, dass es so lange wartet und dann auf die Zustellung der Dateien zurückgreift./home/admin_user/root
Sie müssen Ihre Konfiguration wie folgt ändern:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.net-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.net-0001/privkey.pem; # managed by Certbot
index index.html index.htm index.nginx-debian.html;
server_name mysite.net;
location / {
root /home/admin_user/root;
}
}
Da Angular eine clientseitig gerenderte Anwendung ist, haben Sie keinen Backing-Server, der geproxied wird. Liefern Sie die Assets daher einfach in /home/admin_user/root
.