web-dev-qa-db-ja.com

ApacheProxyPassReverseおよびhttps

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を削除して)、それも機能しませんでした。それもどのように行いますか。 ?

何かご意見は?前もって感謝します。

5
Joshua Ball

これは私のために働いていました

<VirtualHost *:443>                                                                                                                                                                        
 ServerName domaine.com
 SSLProxyEngine on                                                                                                                                                                          
 <Location />                                                                                                                                                                               
 ProxyPass https://www.something.com/                                                                                                                                                           
 ProxyPassReverse https://www.something.com/                                                                                                                                                    
 </Location>                                                                                                                                                                                
</VirtualHost>
6
radius

次は私のために働きます:

<VirtualHost A.B.C.D:443>
    ...

    ProxyPass / https://192.168.1.101/
    ProxyPass / https://192.168.1.101/
</VirtualHost>

(どこ A.B.C.Dは明らかにパブリックIPアドレスです)

1
womble

すべてのリクエストを安全なネットワークにリダイレクトする場合は、 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>
0
Rahul Gupta

私は個人的に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

あなたがやろうとしていることを私がやるファイアウォールからの短い努力。

0
Jon