%20%D0%BD%D0%B0%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC%20%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%20Nginx%20%D1%81%20Angular.png)
Сервер, о котором идет речь, работает под управлением Ubuntu 16.04, обслуживая приложение Angular через обратный прокси-сервер. После подключения к основной странице не все страницы загружаются так долго, но некоторые, безусловно, загружаются. А именноhttps://мойсайт/админстраница. Здесь также есть некоторые отсутствующие кнопки js, которые не отображаются на странице, хотя все остальные аспекты страницы отображаются. Наш сайт создан для маршрутизации трафика с помощью скрипта js, но это один из файлов с 60-секундным TTFB! (большинство файлов с медленным TTFB — это js) Хотя все приложение не работает без обратного прокси, я могу подтвердить это, когда он не действует. Кроме того, может быть полезно добавить, что TTFB на сайте не всегда составляет 60 секунд после первой загрузки, однако он всегда будет равен этому значению при загрузке в окне инкогнито.
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/*;
}
сайты-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;
}
}
решение1
Итак, основываясь на вашем сообщении, я думаю, что у вас скопированная и вставленная настройка конфигурации nginx для обратного прокси-сервера.
Ваша конфигурация имеет следующую строфу:
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;
}
Это утверждение - для всего ниже /
, отправьте запрос на localhost:1337
который из вашего комментария, вероятно, не существует. У Nginx есть 60-секундный тайм-аут, так что я предполагаю, что он ждет так долго, а затем откатывается, доставляя файлы на/home/admin_user/root
Все, что вам нужно сделать, это изменить конфигурацию следующим образом:
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;
}
}
Так как Angular — это клиентское приложение, рендеринг которого выполняется через прокси, у вас нет резервного сервера. Поэтому просто доставляйте активы в формате /home/admin_user/root
.