Создайте несколько псевдонимов для адресов localhost на различных портах

У меня есть некоторые веб-приложения, работающие на моем localhost, к которому я могу получить доступ своим веб-браузером в различных портах.

Например, у меня есть работа сервера ноутбука IPython порта 8888 (я могу получить доступ к нему в http://localhost:8888), и маленькое приложение фляги, которое слушает на порте 9000.

Я знаю, что могу установить псевдоним для localhost путем изменения /etc/hosts, но то, чего я хотел бы достигнуть здесь, должно иметь различные псевдонимы для различных портов.

Например, я хотел бы открыть свой браузер и использование http://notebooks/вместо http://localhost:8888 и http://flaskapp вместо http://localhost:9000.

Существует ли простой способ сделать это?

3
задан 19 January 2015 в 11:28

1 ответ

Необходимо будет использовать или некоторую форму iptables основанного на месте назначения передающего правила, или Apache использования или nginx как прокси. Для nginx:

sudo apt-get install nginx

Создайте конфигурацию виртуального сервера формы:

server {
    server_name notebooks;
    location / {
        proxy_pass http://localhost:8888;
        proxy_redirect default;
    }
    access_log /var/log/nginx/notebook-access.log;
    error_log /var/log/nginx/notebook-error.log;
}

Это может быть сделано путем редактирования сайта по умолчанию (/etc/nginx/sites-available/default), или путем создания нового файла в том каталоге (/etc/nginx/sites-available/notebook, например). Используйте своего любимого редактора с административными привилегиями (sudo vim, sudo -H gedit, и т.д.).

Затем включите сайт путем создания ссылки в /etc/nginx/sites-enabled/, если это уже не существует:

sudo ln -s /etc/nginx/sites-{available,enabled}/default
# or, if you created a new file:
sudo ln -s /etc/nginx/sites-{available,enabled}/notebook

Перезапуск nginx:

sudo service nginx restart

Править /etc/hosts так, чтобы у Вас был псевдоним с тем же именем, используемым для server_name в вышеупомянутой конфигурации.

Можно создать намного больше таких виртуальных серверов для проксирования к различным портам.


Я не слишком уверен в своем iptables-fu, но некоторые простые перенаправления, кажется, работают хорошо на меня. Например, с простым веб-сервером Python (python3 -m http.server 8888):

iptables -t nat -A OUTPUT -p tcp -d notebooks --dport 80 -j REDIRECT --to-ports 8888

Команду легко понять:

  • -A OUTPUT -p tcp соответствовать исходящему трафику TCP.
  • -d notebooks и --dport 80 соответствовать целевому имени хоста и порту. Порт не необходим здесь, так как Вы будете, вероятно, использовать только один порт так или иначе.
  • -j REDIRECT --to-ports 8888 использовать цепочку ПЕРЕНАПРАВЛЕНИЯ, с 8888 как целевой порт для перенаправления. Можно только использовать эту цепочку с nat таблица.
  • Запись для notebooks должен существовать в /etc/hosts перед применением этого правила.
2
ответ дан 1 December 2019 в 17:03

Другие вопросы по тегам:

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