Удобные хосты в development окружении

Предположим вам не хочется использовать адрес вида localhost:3000 для доступа к приложению на локальной машине.

В настройках нужно дополнительно указывать порт (например, для майлеров в Рельсах), проблемы с CORS, по порту сложнее определить приложение чем по домену, автозапоминалки паролей сваливают все домены в один localhost.

Пост о том, как решить эти проблемы настроив проксирование вида *.dev → localhost:3000 затратив минимум усилий.

Dnsmasq #

Позволяет задавать маску для *.dev доменов. Чтобы не добавлять каждый домен по отдельности в /etc/hosts.

pacman -S dnsmasq
sudoedit /etc/dnsmasq.conf

Настраиваем:

listen-address=127.0.0.1
address=/.dev/127.0.0.1

Используем:

sudoedit /etc/resolv.conf.head
nameserver 127.0.0.1

Перезагружаем:

sudo systemctl restart dnsmasq
sudo resolvconf -u

Теперь любой .dev домен будет открывать localhost. Попробуйте http://skynet.dev:3000 при запущенном на 3000 порту сервере.

Nginx #

Осталось избавиться от указания портов:

sudoedit /etc/nginx/sites-enabled/hosts.dev
server {
  listen 80;

  error_log  off;
  access_log off;

  location / {
    proxy_pass  http://localhost:3000;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  }
}
sudo systemctl reload nginx

Теперь любой домен *.dev будет открывать ваш локальный сервер на 3000 порту. Например http://shodan.dev

Если вы запускате несколько приложений за раз, нужно создать ещё несколько директив server, где прописать конкретные домен и порт.

Комментарии

colix

А можно использовать Pow: http://pow.cx/

ksevelyar

Pow клевая штука, но работает только на os x.

webarseny

А что за движок для рельсов использовали?)

ksevelyar

У блога самописный https://github.com/ksevelyar/dobroserver

Арсений

Спасибо:)

Добавить комментарий