Рейтинг:0

Обратный прокси-сервер Apache для туннеля SSH

флаг pt

Я хочу настроить обратный прокси-сервер Apache для моего экземпляра Home-Assistant(hass), работающего в моей локальной сети.

Я туннелировал трафик локального экземпляра hass на удаленный сервер с помощью ssh -N [email protected] -R 8123:локальный хост:8123.

Теперь я попытался настроить простой обратный прокси в Apache:

<VirtualHost *:443>
    ServerName hass.example.com

    SSLEngine On

    # If you manage SSL certificates by yourself, these paths will differ.
    SSLCertificateFile fullchain.pem
    SSLCertificateKeyFile privkey.pem

    SSLProxyEngine on
    SSLProxyProtocol +TLSv1.2 +TLSv1.3
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

    ProxyPreserveHost On
    ProxyRequests Off
    ProxyVia On
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    
            
    # Proxy all traffic to hass
    ProxyPass / http://localhost:8123/ nocanon
    ProxyPassReverse / http://localhost/
    ErrorLog ${APACHE_LOG_DIR}/hass.example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/hass.example.com-access.log combined
    <IfModule security2_module>
        SecRuleEngine off
    </IfModule>
</VirtualHost>

<VirtualHost *:80>
    ServerName hass.example.com

    Redirect permanent / "https://hass.example.com"

    ErrorLog ${APACHE_LOG_DIR}/hass.example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/hass.example.com-access.log combined
</VirtualHost>

К сожалению, если я попытаюсь открыть hass.example.com, браузер отвечает ошибка 400, неверный запрос.

djdomi avatar
флаг za
вы хотите гуакамоле, апач не может обрабатывать ssh сам по себе
флаг us
Ваш `hass` настроен для работы с доменным именем `hass.example.com`?
Toorero avatar
флаг pt
@Tero Kilkanen Нет. Это просто ванильный док-контейнер, прослушивающий локальный хост.
Toorero avatar
флаг pt
@djdomi Я не использую SSH с Apache. Я просто использую (через SSH) локальный порт 8123 и просто хочу проксировать его.
флаг us
`hass` должен иметь конфигурацию для своего корневого доменного имени. Вы должны это проверить.
Toorero avatar
флаг pt
На самом деле я не понимаю, почему это должно быть проблемой, потому что это прозрачный прокси. Прокси запрашивает только `localhost:8123`. Я должен добавить: если я сделаю что-то вроде `ssh -L 8123:localhost:8123 -N [email protected]`, я смогу легко получить доступ к `localhost:8123` на машине, на которой я выполнил команду. Так что сам туннель SSH работает.
Toorero avatar
флаг pt
@TeroKilkanen Я также пытался открыть порт 8123 для публики, и я могу получить доступ к своему экземпляру hass через example.com:8123, но это не совсем то, что мне нужно, так как я хочу направлять свой трафик через прокси-сервер Apache. Я не думаю, что имя корневого домена каким-либо образом настраивается и не имеет значения.
Рейтинг:0
флаг pt

Все сводится к Home-Assistant блокирует реверс-прокси попытки и что вы должны запросы прокси-веб-сокета, а также.

Скорректирован hass-config (конфиг/configuration.yaml):

http:
  use_x_forwarded_for: правда
  доверенные_прокси:
  - ::1
  - 127.0.0.1
  ip_ban_enabled: правда
  login_attempts_threshold: 5

Конфигурация апача:

<VirtualHost *:443>
    ServerName hass.example.com

    SSLEngine On

    # If you manage SSL certificates by yourself, these paths will differ.
    SSLCertificateFile fullchain.pem
    SSLCertificateKeyFile privkey.pem

    SSLProxyEngine on
    SSLProxyProtocol +TLSv1.2 +TLSv1.3
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

    ProxyPreserveHost On
    ProxyRequests Off
    ProxyVia On
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    
            
    # Proxy all traffic to hass
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket
    RewriteRule /(.*) ws://localhost:8123/$1 [P]
    RewriteCond %{HTTP:Upgrade} !=websocket
    RewriteRule /(.*) http://localhost:8123/$1 [P]
    ProxyPassReverse / http://localhost:8123


    ErrorLog ${APACHE_LOG_DIR}/hass.example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/hass.example.com-access.log combined
    <IfModule security2_module>
        SecRuleEngine off
    </IfModule>
</VirtualHost>

<VirtualHost *:80>
    ServerName hass.example.com

    Redirect permanent / "https://hass.example.com"

    ErrorLog ${APACHE_LOG_DIR}/hass.example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/hass.example.com-access.log combined
</VirtualHost>

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.