Задать вопрос
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. Ведь конгда я запускаю одновременно на одном порту, то второе приложение не запускается выбивая ошибку, что порт занят. Как же у этого кренделя получилось такой конфиг запустить?
  • Вопрос задан
  • 6649 просмотров
Подписаться 2 Оценить 2 комментария
Решение пользователя АртемЪ К ответам на вопрос (4)
Jump
@Jump
Системный администратор со стажем.
Сервер отдает сайт по имени.
Порт обычно стандартный 80, хотя можно использовать любой другой.
Допустим у вас работает веб сервер с IP адресом x.x.x.x и портом 80 - вы можете разместить на нем хоть миллион сайтов, главное чтобы имена разные были.
А порт это просто указатель веб серверу где слушать запросы к сайтам которые он раздает.

Вот у меня есть 2 проекта на ноде.
В каждом из проектов свой веб сервер. И разумеется у него должен быть свой порт, чтобы понимать что запрос адресован ему.
А если сервер один - то и порт нужен один.
Ответ написан