[[Twins]]
 

Twins

При использовании в качестве прокси, данный сервер «срезает» часть контента (#18)

Решение не найдено, если требуется реверсивное проксирование, то лучше сразу использовать сервер gmid

Многозадачный сервер для протокола Gemini с поддержкой кеширования, реверсивного проксирования и других функций. Написанный на языке Go.

Установка

go install code.rocketnine.space/tslocum/twins@latest

Пример маршрутизации общего IPv4 адреса доменов first.host.org и second.host.org на разные ресурсы Yggdrasil:

/home/twins/config.yaml
listen: "xx.xx.xx.xx:1965"
hosts:
  first.host.org:
    cert: /home/twins/first.host.org/cert.pem
    key: /home/twins/first.host.org/key.rsa
    paths:
      -
        path: /
        proxy: gemini-insecure://[xxx:xxxx:xxxx:xxxx::xxxx]:1965
  second.host.org:
    cert: /home/twins/second.host.org/cert.pem
    key: /home/twins/second.host.org/key.rsa
    paths:
      -
        path: /
        proxy: gemini-insecure://[xxx:xxxx:xxxx:xxxx::xxxx]:1966

По такому же принципу можно запустить службы на свободных локальных адресах IPv4 или использовать разный порт для каждого сервера.
На целевых (публичных) ресурсах Yggdrasil вместо разных портов, достаточно настроить Адрес из подсети 300::/64.

Сертификаты в данном примере должны быть сконфигурированы на соответствующий домен, например для first.host.org:

openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 365 -nodes -subj "/CN=first.host.org"

* если запись для IPv6 - квадратные скобки в CN не используются

Для запуска указываем путь к бинарному файлу twins и вторым аргументом - путь к файлу конфигурации:

/home/twins/go/bin/twins -config /home/twins/config.yaml

Можно создать сервис:

/etc/systemd/system/twins.service
[Unit]
Description=twins
After=network.target

[Service]
Type=simple
User=twins
Group=twins
WorkingDirectory=/home/twins/
ExecStart=/home/twins/go/bin/twins -config /home/twins/config.yaml
StandardOutput=file:/home/twins/debug.log
StandardError=file:/home/twins/error.log
Restart=on-failure

[Install]
WantedBy=multi-user.target

А также добавить автозапуск:

systemctl daemon-reload
systemctl enable twins
systemctl start twins

Заметки

У сервера twins иногда бывают проблемы с кодировкой кириллических ресурсов, поэтому целевые хосты должны отдавать кодировку в заголовке:

text/gemini; charset=utf-8

Как указано в readme, важно также указать размер контента (size)

Чтобы отключить проверку сертификата, можно использовать псевдо-протокол gemini-insecure://

Ссылки

Только авторизованные участники могут оставлять комментарии.
gemini_protocol/twins.txt · Последнее изменение: 2024/02/07 22:32 — d4708
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki