Директория сайта на другом порту
Переносим директорию сайта на другой порт с использованием 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;
}
На этом я думаю можно и закончить данную заметку, так как основной смысл передан, но если у вас есть идеи по дополнению записи или вопросы, то оставляйте их в комментариях. Спасибо за внимание.