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