web-dev-qa-db-ja.com

SSLを使用したApacheリバースプロキシで「400不正なリクエスト」が発生する

Ubuntuサーバーのポート9069で実行されているOdooインスタンスがあります。現在、Apacheはポート8069でリッスンしており、これを9069にプロキシパスしています(これは正常に機能します)。有効なURLは http://example.com:8069 です。

ここで、フロントエンドURLのSSLでこれを機能させる必要があります。 ( https://example.com:8069 )。ただし、ブラウザでアクセスすると400 Bad requestエラーが発生します。正確なエラーは次のとおりです。

Bad Request:ブラウザが、このサーバーが理解できないリクエストを送信しました。理由:SSL対応のサーバーポートにプレーンHTTPを話している。代わりに、HTTPSスキームを使用してこのURLにアクセスしてください。example.comのApache/2.4.33(Ubuntu)サーバーポート8069

また、URLがhttpバージョンに変更されることにも気付きました。

以下は、ドメインに使用したvirtualhost confです。

<IfModule mod_ssl.c>
<VirtualHost *:8069>

  ServerName MySite
  ServerAlias example.com:8069

   SSLEngine on
   #SSLProxyEngine on
   SSLCertificateKeyFile /etc/Apache2/sslfolder/mysite.key
   SSLCertificateFile    /etc/Apache2/sslfolder/mysite.crt
   SSLCertificateChainFile /etc/Apache2/sslfolder/mysite.txt

  ProxyPreserveHost On
  ProxyRequests Off

  ProxyPass /longpolling/ http://localhost:8072/
  ProxyPassReverse /longpolling/ http://localhost:8072/

  ProxyPass / http://localhost:9069/
  ProxyPassReverse / http://localhost:9069/

</VirtualHost>
</IfModule>

すでにApacheエラーログを確認しましたが、そこには有用な情報がありません。

注:example.comには別のvirtualhostファイルがあり、これは80および443ポートが構成されたかなり標準的なファイルです。 (これはWebサイト専用であり、odooではありません)。関連性があると思われる場合は、バーチャルホストを投稿します。

1
Kishor N

以下の修正で実際に修正しました。

ServerName MySite

に変更されます

ServerName example.com:8069

そして

ProxyPass / http://localhost:9069/
ProxyPassReverse / http://localhost:9069/

に変更されます

ProxyPass / http://localhost:9069/
ProxyPassReverse / http://example.com:8069/
0
Kishor N

これは数か月前のものであり、検索後につまずきました。これが将来の検索者に役立つ場合...

ServerNameフィールドを変更する必要はなく、ProxyPassReverseはポート番号を必要としませんでしたが、リバースプロキシ構成で同様のことを行います。だからあなたの設定を使って、私は試したでしょう:

ProxyPass / http://localhost:9069/
ProxyPassReverse / http://localhost/
1
Matt Muggeridge

それが誰かを助ける場合:私の場合、一部のリクエストのみが400コードを返していました。

私は次のように修正しました:

ProxyPreserveHostオン

1
Rafael

ユーザーがURLの後にポート8069を入力することは望ましくありません。

従来の80/443アプローチを使用して、プロキシに8069ポートを処理/非表示させます。

Listen 80
##AAdd rewrite rules here to convert http to https
<VirtualHost *:443>

  ServerName MySite
  ServerAlias example.com

   SSLEngine on
   #SSLProxyEngine on
   SSLCertificateKeyFile /etc/Apache2/sslfolder/mysite.key
   SSLCertificateFile    /etc/Apache2/sslfolder/mysite.crt
   SSLCertificateChainFile /etc/Apache2/sslfolder/mysite.txt

  ProxyPreserveHost On
  ProxyRequests Off

 ## if odoo is on local Host 
  ProxyPass / http://localhost:8069/
  ProxyPassReverse / http://localhost:8069/
## if odoo is on remote Host and you do not want intranet users interception non ssl traffic
  ProxyPass / https://odoo_ip_address:8070
  ProxyPassReverse https://odoo_ip_adress:8070

##odoo http port is 8069 and https port is 8070

</VirtualHost>
0
Robert Nsimbi