Как вы обслуживаете статические файлы с сервера 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
с небольшой разницей в использовании)