Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Как правильно сделать сервер

Да, Nginx нужен. Он будет работать как reverse proxy — принимать запросы из интернета и распределять их между твоими приложениями (сайтом и бекендом).

Короткая схема работы:
Интернет → Cloudflare (SSL) → Nginx (прокси) → Твои приложения на разных портах

Базовая настройка для твоего случая:


  1. Устанавливаешь Nginx на VPS
  2. Создаешь конфиги в /etc/nginx/sites-available/
  3. Настраиваешь proxy_pass на порты твоих приложений (например, сайт на порт 3000, бекенд на порт 8080)
  4. Включаешь сайты через симлинки в sites-enabled
Пример конфига для двух приложений:
# Бекенд (api.твойдомен.ru)
server {
listen 80;
server_name api.твойдомен.ru;
location / {
proxy_pass
Пожалуйста, авторизуйтесь для просмотра ссылки.

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

# Сайт (твойдомен.ru)
server {
listen 80;
server_name твойдомен.ru;
root /var/www/site;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}


Что касается Cloudflare:

  • SSL можно отдать на откуп Cloudflare — на сервере оставить HTTP (порт 80)
  • В дашборде Cloudflare выставить режим SSL/TLS: Full или Full (strict)
  • Можно создать Origin-сертификат в Cloudflare и подключить его в Nginx для шифрования трафика между Cloudflare и сервером
Важный момент:

Чтобы Nginx видел реальные IP клиентов (а не Cloudflare), добавь в конфиг:
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
real_ip_header CF-Connecting-IP;
Итоговая схема:

  1. Cloudflare принимает HTTPS-запросы
  2. Расшифровывает их (SSL) и отправляет по HTTP на твой VPS
  3. Nginx ловит запрос и проксирует на нужное приложение по порту
Всё просто, главное — не запутаться в портах и конфигах. Удачи с сервером
 
Да, Nginx нужен. Он будет работать как reverse proxy — принимать запросы из интернета и распределять их между твоими приложениями (сайтом и бекендом).

Короткая схема работы:
Интернет → Cloudflare (SSL) → Nginx (прокси) → Твои приложения на разных портах

Базовая настройка для твоего случая:


  1. Устанавливаешь Nginx на VPS
  2. Создаешь конфиги в /etc/nginx/sites-available/
  3. Настраиваешь proxy_pass на порты твоих приложений (например, сайт на порт 3000, бекенд на порт 8080)
  4. Включаешь сайты через симлинки в sites-enabled
Пример конфига для двух приложений:
# Бекенд (api.твойдомен.ru)
server {
listen 80;
server_name api.твойдомен.ru;
location / {
proxy_pass
Пожалуйста, авторизуйтесь для просмотра ссылки.

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

# Сайт (твойдомен.ru)
server {
listen 80;
server_name твойдомен.ru;
root /var/www/site;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}


Что касается Cloudflare:

  • SSL можно отдать на откуп Cloudflare — на сервере оставить HTTP (порт 80)
  • В дашборде Cloudflare выставить режим SSL/TLS: Full или Full (strict)
  • Можно создать Origin-сертификат в Cloudflare и подключить его в Nginx для шифрования трафика между Cloudflare и сервером
Важный момент:

Чтобы Nginx видел реальные IP клиентов (а не Cloudflare), добавь в конфиг:
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
real_ip_header CF-Connecting-IP;
Итоговая схема:

  1. Cloudflare принимает HTTPS-запросы
  2. Расшифровывает их (SSL) и отправляет по HTTP на твой VPS
  3. Nginx ловит запрос и проксирует на нужное приложение по порту
Всё просто, главное — не запутаться в портах и конфигах. Удачи с сервером
бля ну зачем мне надо знать как люди делают а не нейронка
 
Что значит "и сайт и бекенд"? Распиши нормально, что ты поднимать хочешь. Nginx не обязателен, но его обычно накидывают из-за:
1) Снятия ограничений на фреймворках, например если ты используешь фреймворк, который не поддерживает SSL или HTTP2/3, то nginx забирает запросы по HTTP2/3 с SSL и передаёт их твоему сервису по понятному ему HTTP/1.1 и точно так же обратно
2) SSL, можно менять сертификаты и устанавливать их без перезапуска твоего сервиса, а сам nginx перезапускается очень быстро (также можно автоматизировать продление сертификатов, например у certbot есть поддержка nginx)
3) Роутинг/фильтрация запросов, если у тебя несколько сайтов или сервисов ты можешь отправлять запросы конкретному сервису по фильтрам, типа запросы по /api идут в твой API-сервис, а запросы по /metrics отдают веб-морду графаны какой-нибудь
И это не всё, что он умеет, написал просто основное

*Т.к у тебя Cloudflare тебе нужно будет скорее всего ограничить доступ к VPS и впускать запросы только от Cloudflare по IP, очевидно для nginx уже должна быть где-то инструкция. Я этим не занимался, поэтому подсказать по поводу CF не смогу
 
Да, всё абсолютно верно! Тебе нужен Nginx (или его современные аналоги), и в этой схеме он будет выполнять роль Reverse Proxy (обратного прокси-сервера).

Выглядит это как работа умного швейцара. У твоего сервера всего один IP-адрес, а стандартные порты для веб-трафика (80 для HTTP и 443 для HTTPS) может слушать только одна программа. Если запустить бэкенд на 80-м порту, то сайт туда уже не повесить.

Здесь на сцену выходит Nginx. Он один занимает 80 и 443 порты, принимает все входящие запросы от Cloudflare и решает, куда их направить внутри твоего сервера.

Как обычно выглядит такая схема:​

  1. Cloudflare принимает запрос пользователя к твоему домену (защищает от DDoS, кэширует картинки).
  2. Запрос летит на IP твоего VPS и попадает в Nginx.
  3. Nginx смотрит на маршрут запроса:
    • Если пользователь зашел на главную твоя-игра.com ➔ Nginx просто отдает ему файлы сайта (HTML/CSS/JS) из нужной папки.
    • Если запрос идет на твоя-игра.com/api/ (или на поддомен api.твоя-игра.com) ➔ Nginx незаметно перекидывает этот запрос на локальный порт твоего бэкенда (например, на localhost:3000, где крутится твой Node.js или Python).

Пример простейшего конфига Nginx:​

Вот как это выглядит на практике в файле настроек:

Nginx

<span>server</span> {<br> <span>listen</span> <span>80</span>;<br> <span>server_name</span> mydomain.com www.mydomain.com;<br><br> <span># 1. Отдаем файлы фронтенда</span><br> <span>location</span> / {<br> <span>root</span> /var/www/my-website; <span># Папка, где лежат файлы сайта</span><br> <span>index</span> index.html;<br> <span>try_files</span> $uri $uri/ /index.html; <span># Важно, если фронтенд на React/Vue</span><br> }<br><br> <span># 2. Проксируем запросы к бэкенду</span><br> <span>location</span> /api/ {<br> <span>proxy_pass</span>
Пожалуйста, авторизуйтесь для просмотра ссылки.
<span># Порт, на котором работает твой бэкенд</span><br> <span>proxy_set_header</span> Host $host;<br> <span>proxy_set_header</span> X-Real-IP $remote_addr;<br> }<br>}<br>

Альтернатива Nginx​

Если ты раньше никогда не настраивал линуксовые сервера и конфиги Nginx кажутся тебе замороченными, очень советую посмотреть на Caddy. Это современный веб-сервер, который делает то же самое, но его конфиг для твоей задачи займет буквально три строчки, и он максимально дружелюбен к новичкам.

На каких технологиях у тебя написаны фронтенд и бэкенд (React, голый HTML, Node.js, Python)?
 
Что значит "и сайт и бекенд"? Распиши нормально, что ты поднимать хочешь. Nginx не обязателен, но его обычно накидывают из-за:
1) Снятия ограничений на фреймворках, например если ты используешь фреймворк, который не поддерживает SSL или HTTP2/3, то nginx забирает запросы по HTTP2/3 с SSL и передаёт их твоему сервису по понятному ему HTTP/1.1 и точно так же обратно
2) SSL, можно менять сертификаты и устанавливать их без перезапуска твоего сервиса, а сам nginx перезапускается очень быстро (также можно автоматизировать продление сертификатов, например у certbot есть поддержка nginx)
3) Роутинг/фильтрация запросов, если у тебя несколько сайтов или сервисов ты можешь отправлять запросы конкретному сервису по фильтрам, типа запросы по /api идут в твой API-сервис, а запросы по /metrics отдают веб-морду графаны какой-нибудь
И это не всё, что он умеет, написал просто основное

*Т.к у тебя Cloudflare тебе нужно будет скорее всего ограничить доступ к VPS и впускать запросы только от Cloudflare по IP, очевидно для nginx уже должна быть где-то инструкция. Я этим не занимался, поэтому подсказать по поводу CF не смогу
Ну вот как раз таки на счет /api, я просто почекал почти у всех если написать client1337.xyz/api то тебя перекинет на client1337.xyz значит у них бекенд работает как то по-другому мб на отдельном хосте либо домене
 
Да, Nginx нужен. Он будет работать как reverse proxy — принимать запросы из интернета и распределять их между твоими приложениями (сайтом и бекендом).

Короткая схема работы:
Интернет → Cloudflare (SSL) → Nginx (прокси) → Твои приложения на разных портах

Базовая настройка для твоего случая:


  1. Устанавливаешь Nginx на VPS
  2. Создаешь конфиги в /etc/nginx/sites-available/
  3. Настраиваешь proxy_pass на порты твоих приложений (например, сайт на порт 3000, бекенд на порт 8080)
  4. Включаешь сайты через симлинки в sites-enabled
Пример конфига для двух приложений:
# Бекенд (api.твойдомен.ru)
server {
listen 80;
server_name api.твойдомен.ru;
location / {
proxy_pass
Пожалуйста, авторизуйтесь для просмотра ссылки.

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

# Сайт (твойдомен.ru)
server {
listen 80;
server_name твойдомен.ru;
root /var/www/site;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}


Что касается Cloudflare:

  • SSL можно отдать на откуп Cloudflare — на сервере оставить HTTP (порт 80)
  • В дашборде Cloudflare выставить режим SSL/TLS: Full или Full (strict)
  • Можно создать Origin-сертификат в Cloudflare и подключить его в Nginx для шифрования трафика между Cloudflare и сервером
Важный момент:

Чтобы Nginx видел реальные IP клиентов (а не Cloudflare), добавь в конфиг:
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
real_ip_header CF-Connecting-IP;
Итоговая схема:

  1. Cloudflare принимает HTTPS-запросы
  2. Расшифровывает их (SSL) и отправляет по HTTP на твой VPS
  3. Nginx ловит запрос и проксирует на нужное приложение по порту
Всё просто, главное — не запутаться в портах и конфигах. Удачи с сервером
hexcat n2
 
Назад
Сверху Снизу