<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.uugrn.org/index.php?action=history&amp;feed=atom&amp;title=Apache_Reverse_Proxy</id>
	<title>Apache Reverse Proxy - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.uugrn.org/index.php?action=history&amp;feed=atom&amp;title=Apache_Reverse_Proxy"/>
	<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;action=history"/>
	<updated>2026-05-19T11:45:17Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in UUGRN</subtitle>
	<generator>MediaWiki 1.42.5</generator>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9845&amp;oldid=prev</id>
		<title>Rabe: c&amp;p-unfall beseitigt</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9845&amp;oldid=prev"/>
		<updated>2012-04-06T12:51:06Z</updated>

		<summary type="html">&lt;p&gt;c&amp;amp;p-unfall beseitigt&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. April 2012, 12:51 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l22&quot;&gt;Zeile 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== ProxyPass auf dem Proxy ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== ProxyPass auf dem Proxy ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Damit bekommen wir auf dem &#039;&#039;&#039;Proxy&#039;&#039;&#039; die beiden Ports 20080 und 20443, die 1:1 mit den Ports 80 und 443 auf dem &#039;&#039;&#039;RealServer&#039;&#039;&#039; verbunden sind. &lt;/del&gt;Der Zugriff für ProxyPass erfolgt entsprehend, z.B.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Der Zugriff für ProxyPass erfolgt entsprehend, z.B.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l67&quot;&gt;Zeile 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;Achtung: &amp;#039;&amp;#039;StrictHostKeyChecking yes&amp;#039;&amp;#039; verhindert, dass beim ersten Verbindungsaufbau nach example_tunnel nach dem unbekannten Hostkey gefragt wird. Dieser sollte bereits in ~/.ssh/known_hosts enthalten sein (&amp;#039;&amp;#039;# StrictHostKeyChecking yes&amp;#039;&amp;#039;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;Achtung: &amp;#039;&amp;#039;StrictHostKeyChecking yes&amp;#039;&amp;#039; verhindert, dass beim ersten Verbindungsaufbau nach example_tunnel nach dem unbekannten Hostkey gefragt wird. Dieser sollte bereits in ~/.ssh/known_hosts enthalten sein (&amp;#039;&amp;#039;# StrictHostKeyChecking yes&amp;#039;&amp;#039;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== ProxyPass auf dem Proxy ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== ProxyPass auf dem Proxy ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rabe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9844&amp;oldid=prev</id>
		<title>Rabe: /* VirtuallHost */ typo</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9844&amp;oldid=prev"/>
		<updated>2012-04-06T10:15:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;VirtuallHost: &lt;/span&gt; typo&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. April 2012, 10:15 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l165&quot;&gt;Zeile 165:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 165:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VirtuallHost &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VirtualHost &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;VirtualHost Config auf dem &amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;VirtualHost Config auf dem &amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rabe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9843&amp;oldid=prev</id>
		<title>Rabe: Variationen</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9843&amp;oldid=prev"/>
		<updated>2012-04-06T00:20:08Z</updated>

		<summary type="html">&lt;p&gt;Variationen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. April 2012, 00:20 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l179&quot;&gt;Zeile 179:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 179:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Motivation ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Motivation &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;und Variationen &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Eine der Hauptmotivationen hinter diesem Setup ist, den eigentlichen RealServer möglichst &amp;quot;im Hintergrund&amp;quot; zu behalten. Für Aussenstehende ist bei sorgfältiger Konfiguration nicht ersichtlich, dass verschiedene VirtualHosts durch andere Server bedient werden.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Eine der Hauptmotivationen hinter diesem Setup ist, den eigentlichen RealServer möglichst &amp;quot;im Hintergrund&amp;quot; zu behalten. Für Aussenstehende ist bei sorgfältiger Konfiguration nicht ersichtlich, dass verschiedene VirtualHosts durch andere Server bedient werden.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l189&quot;&gt;Zeile 189:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 189:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* einen RealServer hinter mehreren Proxy-Servern betreiben (Fallback ...)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* einen RealServer hinter mehreren Proxy-Servern betreiben (Fallback ...)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* mehrere RealServer hinter einem Proxy Server betreiben&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* mehrere RealServer hinter einem Proxy Server betreiben&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Kombination von 2 Dynamischen IP-Adressen für Proxy und RealServer (nicht einfach rückverfolgbar)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Kaskade aus mehreren Reverse-Proxies, zB CloudServer.org==(via SSH-Tunnel)==&amp;gt;Rootserver.de ==(SSH Tunnel)==&amp;gt;DSL-Anschluss/DynDNS&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Anwendungsbeispiel]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Anwendungsbeispiel]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rabe</name></author>
	</entry>
	<entry>
		<id>https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9842&amp;oldid=prev</id>
		<title>Rabe: Brain-Dump</title>
		<link rel="alternate" type="text/html" href="https://wiki.uugrn.org/index.php?title=Apache_Reverse_Proxy&amp;diff=9842&amp;oldid=prev"/>
		<updated>2012-04-06T00:14:58Z</updated>

		<summary type="html">&lt;p&gt;Brain-Dump&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dieser Artikel beschreibt, wie man mit &amp;#039;&amp;#039;&amp;#039;Apache&amp;#039;&amp;#039;&amp;#039; einen &amp;#039;&amp;#039;&amp;#039;Reverse Proxy&amp;#039;&amp;#039;&amp;#039; aufbauen kann. Üblicherweise wird das verwendet, um Applikationen, die auf einem nicht direkt vom Internet aus erreichbaren Server laufen auf einem externen Webserver zugreifbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsfall ==&lt;br /&gt;
Der Focus dieses Artikels besteht allerdings darin den Anwendungsfall zu beschreiben, bei dem ein Webserver hinter einem NAT-Router mit und ohne PortForwarding betrieben wird. &lt;br /&gt;
&lt;br /&gt;
Das Ziel aller Bemühungen soll in jedem Fall sein: Die Website &amp;#039;&amp;#039;&amp;#039;http://www.foo.example.com/&amp;#039;&amp;#039;&amp;#039; soll auf der IP-Adresse des &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; Servers auflaufen und von dort aus zum &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; durchgereicht werden.&lt;br /&gt;
&lt;br /&gt;
Wir gehen in den Beispielen davon aus, dass wir root-Rechte oder vergleichtbare Berechtigungen für die Konfiguration beider Webserver haben. Es muss die Konfiguration verändert werden können, es müssen ggf. Softwarepakete installiert werden, Apache muss neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
== Begriffe ==&lt;br /&gt;
Im folgenden werden die Begriffe &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Realserver&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;öffentliche IP-Adresse&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Website&amp;#039;&amp;#039;&amp;#039; wie folgt verwendet: &lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; ist ein Apache, der auf einem per Internet erreichbaren Server läuft, z.B. auf einem Root-Server. Der Proxy-Server verwendet in den folgenden Beispielen verschiedene Websites auf einer oder verschiedenen &amp;#039;&amp;#039;&amp;#039;offiziellen IP-Adressen&amp;#039;&amp;#039;&amp;#039;, z.B. als &amp;#039;&amp;#039;Namebased Virtual Hosts&amp;#039;&amp;#039;. Die DNS-Einträge der jeweiligen Websites zeigen auf die &amp;#039;&amp;#039;offiziellen IP-Adressen&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; steht irgendwo, wo er nicht ohne weiteres von extern erreichbar ist, etwa hinter einem NAT-Router, Firewall oder ähnlichem. Es werden beide Szenarien betrachtet: Der &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; ist über eine (bekannte) IP-Adresse mit Port-Forwarding oder ähnlichem grundsätzlich von extern erreichbar, hat aber eine dynamisch vergebene IP-Adresse, die sich täglich oder häufiger ändert. Die Auflösung der IP-Adresse erfolgt über einen DynDNS-Hostname, z.B. &amp;#039;&amp;#039;&amp;#039;example.homeip.net&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
In einem erweiterten Szenario läuft der &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; irgendwo, kann aber mindestens eine SSH-Verbindung Richtung &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; aufbauen. Im einfachsten Fall ist es hier ein NAT-Router, der keine statischen Portweiterleitungen nach innen hat oder welche, die nicht selbst verwaltet werden können (z.B. Firmennetz, LAN-Party, ...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fall 1: RealServer per DynDNS von aussen erreichbar ==&lt;br /&gt;
Für diesen Fall benötigen wir den DynDNS-Namen, hier example.homeip.net. Es wird angenommen, dass hinter diesem Hostname eine &amp;#039;&amp;#039;&amp;#039;öffentliche IP-Adresse&amp;#039;&amp;#039;&amp;#039; steckt und dass auf Port 80/tcp entweder direkt oder via Port-Forwarding auf dem NAT-Router direkt der &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
=== ProxyPass auf dem Proxy ===&lt;br /&gt;
Damit bekommen wir auf dem &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; die beiden Ports 20080 und 20443, die 1:1 mit den Ports 80 und 443 auf dem &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; verbunden sind. Der Zugriff für ProxyPass erfolgt entsprehend, z.B.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName          www.foo.example.com&lt;br /&gt;
    ProxyPass / http://example.homeip.net/ connectiontimeout=5 timeout=30&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(gekürzt auf die wesentlichen Direktiven)&lt;br /&gt;
&lt;br /&gt;
== Fall 2: RealServer nur via SSH-Tunnel erreichbar ==&lt;br /&gt;
In diesem Fall ist der RealServer &amp;#039;&amp;#039;&amp;#039;irgendwo&amp;#039;&amp;#039;&amp;#039;. Der &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; verfügt über eine [[Firewall Piercing|wie-auch-immer Methode]], um eine SSH-Verbindung zum &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; aufbauen zu können und dass es möglich ist hier PortForwading zu betreiben.&lt;br /&gt;
&lt;br /&gt;
=== SSH-Tunnel ===&lt;br /&gt;
Auf dem &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; einzurichten:&lt;br /&gt;
; ~/.ssh/config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ServerAliveInterval = 15&lt;br /&gt;
ServerAliveCountMax = 8 &lt;br /&gt;
&lt;br /&gt;
Host example_tunnel&lt;br /&gt;
        Hostname proxy.example.com&lt;br /&gt;
        RemoteForward 127.0.0.1:20080 127.0.0.1:80&lt;br /&gt;
        RemoteForward 127.0.0.1:20443 127.0.0.1:443&lt;br /&gt;
        BatchMode yes&lt;br /&gt;
        ConnectionAttempts 5&lt;br /&gt;
        ConnectTimeout 10&lt;br /&gt;
        ExitOnForwardFailure yes&lt;br /&gt;
        KbdInteractiveAuthentication no&lt;br /&gt;
        PasswordAuthentication no&lt;br /&gt;
        StrictHostKeyChecking yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktional relevant sind hier folgende Zeilen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        RemoteForward 127.0.0.1:20080 127.0.0.1:80&lt;br /&gt;
        RemoteForward 127.0.0.1:20443 127.0.0.1:443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Tunnel aufbauen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -N example_tunnel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
;Achtung: &amp;#039;&amp;#039;StrictHostKeyChecking yes&amp;#039;&amp;#039; verhindert, dass beim ersten Verbindungsaufbau nach example_tunnel nach dem unbekannten Hostkey gefragt wird. Dieser sollte bereits in ~/.ssh/known_hosts enthalten sein (&amp;#039;&amp;#039;# StrictHostKeyChecking yes&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ProxyPass auf dem Proxy ===&lt;br /&gt;
Damit bekommen wir auf dem &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; die beiden Ports 20080 und 20443, die 1:1 mit den Ports 80 und 443 auf dem &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; verbunden sind. Der Zugriff für ProxyPass erfolgt entsprehend, zB&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName          www.foo.example.com&lt;br /&gt;
    ProxyPass / http://127.0.0.1:20080/ connectiontimeout=5 timeout=30&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(gekürzt auf die wesentlichen Direktiven)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Namensbasierte VirtualHosts auf dem RealServer ==&lt;br /&gt;
Egal ob der &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; via DynDNS oder via SSH-Tunnel erreicht wird: Im Normalfall stellt der &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; einen HTTP-Request hin zum konfigurierten &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039;, zum Beispiel &amp;#039;&amp;#039;&amp;#039;http://example.homeip.net/&amp;#039;&amp;#039;&amp;#039;. Wenn auf dem RealServer verschiedene namensbasierte VirtualHosts eingerichtet werden, können diese im Normalfall nicht erreicht werden, denn hierfür wird bei einer HTTP/1.1 Anfrage der Wert aus dem Host Request-Header verwendet, hier wäre das also &amp;#039;&amp;#039;&amp;#039;Host: example.homeip.net&amp;#039;&amp;#039;&amp;#039; und nicht &amp;#039;&amp;#039;&amp;#039;Host: www.foo.example.com&amp;#039;&amp;#039;&amp;#039; oder bei SSH-Tunnel &amp;#039;&amp;#039;&amp;#039;Host: 127.0.0.1:&amp;lt;tunnelport&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Im Normalfall landen Anfragen für unbekannte Hostnamen im default-VirtualHost von Apache. Will man mehr als nur eine &amp;#039;&amp;#039;&amp;#039;Webseite&amp;#039;&amp;#039;&amp;#039; auf einem &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; betreiben, muss man sich hier etwas ausdenken, zum Beispiel verschiedene DynDNS-Einträge mit der gleichen IP-Adresse, mehrere CNAMEs auf einen DynDNS-Hostname, bei SSH-Tunnel ggf. mehrere verschiedene Hostnamen in /etc/hosts für 127.0.0.1. &lt;br /&gt;
&lt;br /&gt;
Praktischerweise müssen wir hier keine DNS-Hacks veranstalten, da mod_proxy die [http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#ProxyPreserveHost ProxyPreserveHost Directive] kennt, mit der der ursprüngliche &amp;#039;&amp;#039;&amp;#039;Host: www.foo.example.com&amp;#039;&amp;#039;&amp;#039; im Request an den &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; erhalten bleibt. Der RealServer kann nun also wieder namensbasiert unterscheiden und wir benötigen nicht für jede &amp;#039;&amp;#039;&amp;#039;Website&amp;#039;&amp;#039;&amp;#039; einen eigenen DNS-Eintrag für den &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039; (CNAME auf example.homeip.net oder A-Record mit 127.0.0.1 für den SSH-Tunnel).&lt;br /&gt;
&lt;br /&gt;
;VirtualHost auf dem &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -----------------------&lt;br /&gt;
# www.foo.example.com&lt;br /&gt;
# -----------------------&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerAdmin         proxy@example.com&lt;br /&gt;
    ServerName          www.foo.example.com&lt;br /&gt;
&lt;br /&gt;
    ErrorLog            …&lt;br /&gt;
    CustomLog           …&lt;br /&gt;
    CustomLog           …&lt;br /&gt;
&lt;br /&gt;
# bei SSH Tunnel:&lt;br /&gt;
#    ProxyPass / http://127.0.0.1:20080/ connectiontimeout=5 timeout=30&lt;br /&gt;
#    ProxyPassReverse / http://127.0.0.1:20080/&lt;br /&gt;
&lt;br /&gt;
# bei DynDNS:&lt;br /&gt;
    ProxyPass /        http://example.homeip.net/ connectiontimeout=5 timeout=30&lt;br /&gt;
    ProxyPassReverse / http://example.homeip.net/&lt;br /&gt;
&lt;br /&gt;
# in jedem Fall wollen wir, dass der RealServer den ursprünglichen Host-Request Header erhält&lt;br /&gt;
    ProxyPreserveHost On&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;VirtualHost auf dem &amp;#039;&amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
        ServerAdmin webmaster@example.com&lt;br /&gt;
&lt;br /&gt;
        ServerName www.foo.example.com&lt;br /&gt;
&lt;br /&gt;
        DocumentRoot /var/www/www.foo.example.com/&lt;br /&gt;
        &amp;lt;Directory /&amp;gt;&lt;br /&gt;
                Options FollowSymLinks&lt;br /&gt;
                AllowOverride None&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
        &amp;lt;Directory /var/www/www.foo.example.com/&amp;gt;&lt;br /&gt;
                Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
                AllowOverride None&lt;br /&gt;
                Order allow,deny&lt;br /&gt;
                allow from all&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
# Wir wollen, dass unser Apache als Client-IP-Adresse *nicht* den Proxy sieht &lt;br /&gt;
# sondern die IP-Adresse des Clients, der sich zum Proxy verbunden hat.&lt;br /&gt;
# Das erledigt mod_remote_ip:  &lt;br /&gt;
#&lt;br /&gt;
# http://httpd.apache.org/docs/2.3/mod/mod_remoteip.html&lt;br /&gt;
#&lt;br /&gt;
        RemoteIPHeader X-Forwarded-For&lt;br /&gt;
        RemoteIPTrustedProxy sigsys.de&lt;br /&gt;
        RemoteIPTrustedProxy 127.0.0.1&lt;br /&gt;
        RemoteIPProxiesHeader X-Forwarded-By &lt;br /&gt;
&lt;br /&gt;
…&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mod_remoteip ==&lt;br /&gt;
Bei allen Reverse-Proxy Szenarien besteht möglicherweise das &amp;#039;&amp;#039;Problem&amp;#039;&amp;#039;, dass in den Logfiles des &amp;#039;&amp;#039;&amp;#039;RealServers&amp;#039;&amp;#039;&amp;#039; nur die IP-Adresse des &amp;#039;&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;&amp;#039; oder gar &amp;#039;&amp;#039;&amp;#039;127.0.0.1&amp;#039;&amp;#039;&amp;#039; durch den SSH-Tunnel erscheint.&lt;br /&gt;
&lt;br /&gt;
=== mod_remoteip für Apache 2.2 bauen ===&lt;br /&gt;
Das Modul mod_remoteip ist leider bei Apache 2.2 noch nicht verfügbar, wurde aber backported. siehe: http://www.serverphorums.com/read.php?10,340545&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# wget &amp;quot;https://raw.github.com/gist/1042237/078b18a627657151fb90ddc027caad67e7191e89/apache-2.2-mod_remoteip.c&amp;quot;&lt;br /&gt;
# mv apache-2.2-mod_remoteip.c mod_remoteip.c&lt;br /&gt;
# apxs2 -i -a -c mod_remoteip.c&lt;br /&gt;
# /etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(getestet unter  Debian Squeeze/amd64)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== VirtuallHost ===&lt;br /&gt;
;VirtualHost Config auf dem &amp;#039;&amp;#039;RealServer&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
        ServerName www.foo.example.com&lt;br /&gt;
&lt;br /&gt;
        RemoteIPHeader X-Forwarded-For&lt;br /&gt;
        RemoteIPTrustedProxy proxy.example.com&lt;br /&gt;
        RemoteIPTrustedProxy 127.0.0.1&lt;br /&gt;
        RemoteIPProxiesHeader X-Forwarded-By &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
Eine der Hauptmotivationen hinter diesem Setup ist, den eigentlichen RealServer möglichst &amp;quot;im Hintergrund&amp;quot; zu behalten. Für Aussenstehende ist bei sorgfältiger Konfiguration nicht ersichtlich, dass verschiedene VirtualHosts durch andere Server bedient werden.&lt;br /&gt;
&lt;br /&gt;
* RealServer unsichtbar hinter einer dynamischen IP betreiben&lt;br /&gt;
* IPv4-RealServer per IPv6 erreichbar machen&lt;br /&gt;
* IPv6-RealServer via IPv4 erreichbar machen&lt;br /&gt;
* RealServer via Mobilfunk anbinden und hinter einem Rootserver verstecken&lt;br /&gt;
* RealServer hinter einer komplexeren Firewall/Proxy-Kaskade betreiben, bei der als Minimalvoraussetzung eine SSH-Session nach außen aufgemacht werden kann, siehe auch [[Firewall Piercing]].&lt;br /&gt;
* einen RealServer hinter mehreren Proxy-Servern betreiben (Fallback ...)&lt;br /&gt;
* mehrere RealServer hinter einem Proxy Server betreiben&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Anwendungsbeispiel]]&lt;/div&gt;</summary>
		<author><name>Rabe</name></author>
	</entry>
</feed>