Puncte:0

Apache Reverse Proxy pentru tunelul SSH

drapel pt

Vreau să configurez un proxy invers Apache pentru instanța mea Home-Assistant(hass) care rulează în rețeaua mea locală.

Am tunelizat traficul instanței locale hass către un server la distanță cu ssh -N [email protected] -R 8123:localhost:8123.

Acum am încercat să configurez un proxy invers simplu în 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>

Din pacate daca incerc sa deschid hass.example.com, browserul răspunde cu 400: Solicitare greșită.

djdomi avatar
drapel za
vrei guacamole, apache nu poate gestiona ssh de la sine
drapel us
„Hass” este configurat să ruleze la numele de domeniu „hass.example.com”?
Toorero avatar
drapel pt
@Tero Kilkanen Nu. Este doar un container de vanilie care ascultă pe localhost.
Toorero avatar
drapel pt
@djdomi Nu folosesc SSH cu Apache. Folosesc doar portul local (prin SSH) `8123` și vreau doar să îl proxy.
drapel us
`Hass` ar trebui să aibă configurație pentru numele său de domeniu rădăcină. Trebuie să verifici asta.
Toorero avatar
drapel pt
De fapt, nu înțeleg de ce ar trebui să fie o problemă, deoarece este un proxy transparent. Proxy-ul solicită doar `localhost:8123`. Ar trebui să adaug: Dacă fac ceva de genul `ssh -L 8123:localhost:8123 -N [email protected]` pot accesa cu ușurință `localhost:8123` pe mașina pe care am executat comanda. Deci tunelul SSH în sine funcționează.
Toorero avatar
drapel pt
@TeroKilkanen Am încercat să deschid public portul 8123 și pot accesa instanța mea hass prin example.com:8123, dar nu este ceea ce vreau, deoarece vreau să-mi direcționez traficul prin proxy-ul Apache. Nu cred că numele de domeniu rădăcină este în vreun fel configurabil și nu contează.
Puncte:0
drapel pt

Totul se rezumă la Asistentul de acasă blochează proxy invers încercări și că trebuie solicitări de proxy websocket, de asemenea.

Hass-config ajustat (config/configuration.yaml):

http:
  use_x_forwarded_for: adevărat
  trusted_proxies:
  - ::1
  - 127.0.0.1
  ip_ban_enabled: adevărat
  login_attempts_threshold: 5

Configurare 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
    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>

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.