WebWost WebWostbeta

Директория сайта на другом порту

Переносим директорию сайта на другой порт с использованием Nginx.

Al-Sher

Всем привет. Недавно у меня возникла ситуация, которая потребовала перевести директорию сайта на другой порт. Возможно я как-то не правильно описал данную задачу, поэтому давайте обратимся к примеру:

У нас есть домен domen.ru. ip 123.45.67.235. По-умолчанию nginx отвечает за порт 80, на порте 8080 стоит php при помощи php-fpm. Но кроме этого у нас есть какое-то еще приложение, допустим написанное на nodeJS и использующее 3000 порт. Нам необходимо перенести только директорию сайта на порт 3000, то есть domen.ru/dir, а остальное оставить как было. Как же нам реализовать такое?

Ответ прост - использовать proxy_pass. Про подключение php-fpm к nginx существует множество статей, но я его и сюда добавлю:

location ~ \.php$ {
    fastcgi_pass  localhost:9000;
    fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Давайте теперь разберемся с переводом директории на порт сайта. Сначала определимся с тем, куда будет идти запрос. Думаю это не должно составить трудности, вот примерный адрес: http://123.45.67.235:3000. Осталось составить правильное условие для работы, для этого обратимся к документации. Так как мы даем всю директорию определенному порту, то необходимо использовать "~":

location ^~ /dir/ {
    proxy_pass http://localhost:3000;
}

Давайте рассмотрим и другую ситуацию: Нам необходимо обрабатывать nodeJS с 3000 портом только главную страницу директории. Как же нам поступить тогда?

В документации Nginx сказано, что точно сравнение описывается знаком "=", то есть нам необходимо написать нечто такое:

location = /dir/ {
    proxy_pass http://localhost:3000;
}

На этом я думаю можно и закончить данную заметку, так как основной смысл передан, но если у вас есть идеи по дополнению записи или вопросы, то оставляйте их в комментариях. Спасибо за внимание.

0 комментариев

Новый комментарий