Должен ли я использовать Nginx для обслуживания React в производстве? - PullRequest
1 голос
/ 13 апреля 2020

Я создаю SPA, используя React, и Node.js на Kubernetes. У меня есть отдельные сервисы и входы для фронт-энда и бэк-энда. Я видел, как люди также используют Nginx для обслуживания сборки React, но я обнаружил, что выполнение ниже хорошо работает.

# Dockerfile.production
FROM node:8.7.0-alpine
RUN mkdir -p /usr/app/client
WORKDIR /usr/app/client
COPY package*.json /usr/app/client/
RUN npm install
RUN npm install -g serve
COPY . /usr/app/client
EXPOSE 3000
RUN npm run build
CMD ["serve", "-s", "build", "-l", "3000" ]

В качестве альтернативы, я мог бы обработать сборку с Nginx, как показано ниже. Это кажется «правильным способом» сделать это, но я не уверен, какое преимущество имеет использование пакета serve npm, хотя мне это кажется очень хакерским. Кажется, что все, что может быть настроено с Nginx для обслуживания приложения, также может быть сделано в Ingress, верно?

server {
    server_name example.com;
    ...

    location ~ / {
        root /var/www/example.com/static;
        try_files $uri /index.html;
    }
}

1 Ответ

2 голосов
/ 13 апреля 2020

Служить хорошо. Nginx может использовать ОЗУ на несколько байтов меньше, но это будет отменено, если использовать все дополнительные функции, которые вы не используете. Мы используем аналогичную настройку Serve для многих наших K8s SPA, и она использует от 60 до 100 МБ ОЗУ на модуль при полной загрузке. Для некоторых других приложений у нас есть урезанная версия Caddy, которая имеет максимум 70 МБ, но немного меньше, но, вероятно, есть более эффективные способы беспокоиться о 30 МБ ОЗУ:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...