Создайте несколько псевдонимов для адресов локального хоста на разных портах
У меня на локальном хосте запущено несколько веб-приложений, к которым я могу получить доступ через веб-браузер через разные порты.
Например, у меня есть сервер ноутбука IPython, работающий через порт 8888 (я могу получить к нему доступ по адресу http://localhost:8888
), и небольшое приложение фляги, которое слушает на порту 9000.
Я знаю, что могу установить псевдоним для localhost, изменив /etc/hosts
, но я бы хотел добиться разных псевдонимов для разных портов.
Например, я хотел бы открыть свой браузер и использовать http://notebooks/
вместо http://localhost:8888
а также http://flaskapp
скорее, чем http://localhost:9000
,
Есть простой способ сделать это?
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
использовать REDIRECT цепочку, с8888
в качестве целевого порта для перенаправления. Вы можете использовать эту цепочку только сnat
Таблица.- Запись для
notebooks
должен существовать в/etc/hosts
прежде чем применять это правило.