80と443のすべてのトラフィックをfoo.comから内部サーバー192.168.1.101にマッピングしたいと思います。私はVirtualHost(UbuntuのApache 2.2)を次のようにセットアップしています(「新しいユーザー」なので、以下のハイパーリンクを分割する必要がありました)。
<VirtualHost *:80>
ServerName foo.com
ServerAlias *.foo.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.1.101/
ProxyPassReverse / http://192.168.1.101/
</VirtualHost>
そして、それはhttpトラフィックに最適です。しかし、私はhttpsに対して同じことをすることができないようです。私が試してみました:
VirtualHost *:80を*に変更します-しかし、それは機能しません(http-> httpおよびhttps-> httpsが必要です)
http://192.168.1.101/ にリダイレクトする*:443の新しいVirtualHostエントリを作成しますが、失敗します(ブラウザータイムアウト)
私はここや他の場所で検索を行いましたが、私が見つけることができる最も近い質問は this でしたが、それは完全には答えませんでした。
また、好奇心から、すべてのポートをhttpsにマッピングしようとしました(2つのProxyPass行をhttpからhttpsに変更して(そしてVHから:80を削除して)、それも機能しませんでした。それもどのように行いますか。 ?
何かご意見は?前もって感謝します。
これは私のために働いていました
<VirtualHost *:443>
ServerName domaine.com
SSLProxyEngine on
<Location />
ProxyPass https://www.something.com/
ProxyPassReverse https://www.something.com/
</Location>
</VirtualHost>
次は私のために働きます:
<VirtualHost A.B.C.D:443>
...
ProxyPass / https://192.168.1.101/
ProxyPass / https://192.168.1.101/
</VirtualHost>
(どこ A.B.C.D
は明らかにパブリックIPアドレスです)
すべてのリクエストを安全なネットワークにリダイレクトする場合は、 httpsを介して、以下を追加します。
<VirtualHost *:443>
ServerName ngmlx441
SSLEngine on
KeepAliveEnabled ON
SSLCipherSuite HIGH:MEDIUM
SSLProtocol all
SSLProxyEngine on
SecureProxy ON
SSLProxyEngine on
SSLCertificateFile /etc/httpd/conf.d/servername.crt
SSLCertificateKeyFile /etc/httpd/conf.d/servername.key
SSLCACertificateFile /etc/httpd/conf.d/orgination.crt
</VirtualHost>
私は個人的にApacheを完全にスキップし、IPTABLESを使用して80と443のすべてのトラフィックを必要なIPに転送します。これにより、パフォーマンスが向上すると思います。
(ファイアウォールルールを編集するためのマシンへのアクセス権があることを前提としています)。
$iptables -A PREROUTING -t nat -i $EXTIF -p tcp --dport 80 -j DNAT --to 192.168.1.101:80
$iptables -A FORWARD -p tcp -m state --state NEW -d 192.168.1.101 --dport 80 -j ACCEPT
あなたがやろうとしていることを私がやるファイアウォールからの短い努力。