ubuntuusers.de

Apache2 externer Zugriff per https interner Zugriff per http

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

Hallo,

ich stehe gerade etwas auf dem Schlauch und benötige einen kleinen Schubser 😉

Ein Apache2 Webserver wurde so eingerichtet, dass er per https erreichbar ist, bzw. per mod_rewrite wird der http Zugriff auf https "umgeleitet". Nun suche ich aber nach einer Möglichkeit den Server rein nur über das Internet per https anzusprechen, also so wie bisher, und von einem internen Netzbereich nur per http. Das Ganze soll so funktionieren, dass man nicht den Port extra angeben muss, sondern über die verwendete IP Adresse funktioniert. Z.B. mit dem Laptop im internen Netz bedeutet http Zugriff, mit dem Laptop von extern, also übers Internet https Zugriff. Geht das denn überhaupt?

Würde mich über Infos freuen.

Vielen Dank.

azzkikr2001

Anmeldungsdatum:
10. Juli 2006

Beiträge: 192

Hi, das geht:

Nach aussen erscheint alles auf Port 80 - äh warte, da hättest Du mich fast auf ne falsche Fährte geschickt:

http ist Standard Port 80 https ist Port 443

Die musst Du aber nicht angeben weil die quasi ans Protokoll "gebunden" sind (per Definition)

Aber selbst wenn wärs kein Problem gewesen, ich denke ja mal DU hängst per Router und NAT am Netz und bräcuhtest sowieso eine Portweiterleitung:

Port 80 Router (Internet-IP) → anderen Port im LAN routen (zb 81) (hier lauscht der Apache per https) Port 80 im Lan = Webserver

Dann muss dein Apache natürlich noch auf dem 81er Port lauschen - aber nach aussen hin würde es als eine IP erscheinen.

Den Aufwand brauchst Du aber garnicht betreiben weil http und https per se schon auf anderen Ports lauschen

bodensee

(Themenstarter)

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

Hoi,

Port 80 Router (Internet-IP) → anderen Port im LAN routen (zb 81) (hier lauscht der Apache per https) Port 80 im Lan = Webserver

Dann muss dein Apache natürlich noch auf dem 81er Port lauschen - aber nach aussen hin würde es als eine IP erscheinen.

Ja klar, portforwarding 💡 da hätte ich auch drauf kommen können 🙄 Allerdings wenn Apache auf einen anderen Port horcht, ist er doch auf dem Standardport nicht erreichbar dachte ich?

Den Aufwand brauchst Du aber garnicht betreiben weil http und https per se schon auf anderen Ports lauschen

Wie meinst Du?

dol

Avatar von dol

Anmeldungsdatum:
6. September 2008

Beiträge: 48

Wohnort: Basel

Füge einfach zu deiner Rewrite Regel vor RewriteRule folgende Zeile ein:

RewriteCond %{REMOTE_ADDR} !^192\.168\.0\..*$ 

Eventuell ist die IP anzupassen, falls du einen anderen IP-Range hast. Dieser ist gültig von 192.168.0.0 bis 192.168.0.255. Beachte die Negation mit !, welche dich nicht umleitet an den HTTPS Service, wenn du von intern kommst.

bodensee

(Themenstarter)

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

Hallo, dol schrieb:

Füge einfach zu deiner Rewrite Regel vor RewriteRule folgende Zeile ein:

RewriteCond %{REMOTE_ADDR} !^192\.168\.0\..*$ 

Eventuell ist die IP anzupassen, falls du einen anderen IP-Range hast. Dieser ist gültig von 192.168.0.0 bis 192.168.0.255. Beachte die Negation mit !, welche dich nicht umleitet an den HTTPS Service, wenn du von intern kommst.

Vielen dank. Ich hatte gesehen, dass man per mod_rewrite ja spezielle IP Adressen aussperren kann. Da dachte ich mir schon fast, dass es etwas mit Regeln geben muss. Das hilft mir enorm weiter.

Danke nochmals.

bodensee

(Themenstarter)

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

Hallo, dol schrieb:

RewriteCond %{REMOTE_ADDR} !^192\.168\.0\..*$ 

Das habe ich hinzugefügt und auf den entsprechenden IP Bereich geändert. Doch leider scheint es nciht zu funktionieren. Ich kann auch leider nirgends eine Info in einer Doku zu der Negation ! finden.

crazyFrog1990

Anmeldungsdatum:
20. Januar 2011

Beiträge: 2

ich habe das ganze bei mir auch probiert. ziel ist das der ordner von extern nur per ssl nutzbar ist, intern aber auch per http geht.

in meiner .htaccess steht:

RewriteEngine On RewriteCond %{SERVER_PORT} !=443 RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$ RewriteRule ^(.*)$ https://__url__/__pfad__/$1 [R=301,L]

Die Regel und die Bedingung für den Port geht. Die Bedingung der IP wird ignoriert. Habe auch schon RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx , RewriteCond %{REMOTE_ADDR} !xxx.xxx.xxx.xxx , RewriteCond %{REMOTE_ADDR} !=^xxx.xxx.xxx.xxx$ , RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$ , ... probiert. an der negation liegt es auch nicht. wenn ich die negation weglasse sollte ja nurnoch bei dieser ip auf https umgeleitet werden. stattdessen wird dann nie umgeleitet. habe in den logs nachgesehen: die ip wird korrekt an den apache übergeben...

irgentwelche vorschläge?

crazyFrog1990

Anmeldungsdatum:
20. Januar 2011

Beiträge: 2

schande über mich. ich benutze seit ca. 4h die falsche ip... wenn ich die richtige nehme gehts^^

Antworten |