Как вы обслуживаете статические файлы с сервера nginx, выступая в качестве обратного прокси для сервера nodejs?

Моя текущая конфигурация nginx такова:

upstream nodejs {
    server 127.0.0.1:3000;
}

server {
    listen 8080;
    server_name localhost;
    root ~/workspace/test/app;
    index index.html;

    location / {
        proxy_pass http://nodejs;
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Я очень новичок в nginx, но, по крайней мере, я знаю, что nginx лучше, чем node/express при обслуживании статических файлов. Как настроить сервер так, чтобы nginx обслуживал статические файлы?

Ответы

Ответ 1

Я решил использовать эту новую конфигурацию:

upstream nodejs {
    server localhost:3000;
}

server {
    listen 8080;
    server_name localhost;
    root ~/workspace/test/app;

    location / {
        try_files $uri $uri/ @nodejs;
    }

    location @nodejs {
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass http://nodejs;
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Благодаря следующей статье "Переполнение стека":


Как обслуживать все существующие статические файлы напрямую с помощью NGINX, но прокси-сервер остаётся на сервере-бэкенде.

Ответ 2

Возможно, вам понадобится еще один location блок в вашем server для статических файлов.

location /static {
  alias /path/to/static/files;
}

Здесь используется директива alias. Затем вы можете удалять файлы в localhost:8080/static/some_file.css

P.S. Вам не нужны теги root или index, которые вы установили в настоящее время. (rootпохож на alias с небольшой разницей в использовании)