Задать вопрос
account-4
@account-4

Как запустить 2 приложения на одном порту для nginx?

Поднимаю несколько сайтов на одной машине. Нашел конфиг с настройкой nginx:

server {

listen 80 default;
server_name site1.ru;

location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/site1.ru;
index index.html index.php;
access_log off;
expires 30d;
error_page 404 = @fallback;
proxy_cache_valid 404 1m;
}

location ~ /\.ht {
deny all;
}

location / {

proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}

location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
}
}

server {

listen 80 default;
server_name site2.ru;

location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/site2.ru;
index index.html index.php;
access_log off;
expires 30d;
error_page 404 = @fallback;
proxy_cache_valid 404 1m;
}

location ~ /\.ht {
deny all;
}

location / {

proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}

location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
}
}


И честно говоря я озадачен.

1. Как у автора этого конфига получилось одновременно запустить 2 приложения на 127.0.0.1:8080? Это правильно Или это опечатка?

2. Как это делается вообще правильно? Вот у меня есть 2 проекта на ноде. Я должен их запустить локально на разных портах же? Например один на 3000, второй на 3001. Ведь конгда я запускаю одновременно на одном порту, то второе приложение не запускается выбивая ошибку, что порт занят. Как же у этого кренделя получилось такой конфиг запустить?
  • Вопрос задан
  • 6367 просмотров
Подписаться 2 Оценить 2 комментария
Решения вопроса 4
Jump
@Jump
Системный администратор со стажем.
Сервер отдает сайт по имени.
Порт обычно стандартный 80, хотя можно использовать любой другой.
Допустим у вас работает веб сервер с IP адресом x.x.x.x и портом 80 - вы можете разместить на нем хоть миллион сайтов, главное чтобы имена разные были.
А порт это просто указатель веб серверу где слушать запросы к сайтам которые он раздает.

Вот у меня есть 2 проекта на ноде.
В каждом из проектов свой веб сервер. И разумеется у него должен быть свой порт, чтобы понимать что запрос адресован ему.
А если сервер один - то и порт нужен один.
Ответ написан
VasyaPertrov
@VasyaPertrov
Изготовление и безопастность сайтов. WP и др.
Ключ для поиска "virtual host"
Ответ написан
@DobriyJuk
Сетевой инженер, системный администратор
По конкретному конфигу не подскажу, но логика такова.
На одном порту можете запускать сколько угодно сайтов, но запустить их все на одном IP нельзя. Для каждого сайта делается свой виртуальный хост и назначается доменное имя. И всё.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Компьютерные сети
software engineer
account-4: "автор этого конфига для аналогичной задачи пишет только"

Именно так настраивается virtualhost в nginx, который служит прокси для другого сервера.

В качестве балансера nginx используется очень часто. На 8080 порту видимо поднят apache, и если внимательно посмотреть конфиг, там видна такая строка:
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/site2.ru;


Которая показывает, что статика (файлы, картинки, документы), будет отдаваться именно nginx-ом напрямую. То есть судя по всему именно для этого - быстрая отдача статики nginx-ом, и перенаправление на другой сервер - и ставили nginx.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы