Apache-2.4

帶有 SSL 的 apache 反向代理給出“400 錯誤請求”

  • August 9, 2019

我有一個 Odoo 實例在 Ubuntu 伺服器的 9069 埠上執行。現在,apache 正在偵聽埠 8069 並將其代理傳遞到 9069(工作正常)。工作 URL 是http://example.com:8069

現在,我需要在前端 URL 上使用 SSL。(https://example.com:8069)。但是,當在瀏覽器中訪問時,這給了我 400 Bad request 錯誤。確切的錯誤是:

錯誤請求:您的瀏覽器發送了此伺服器無法理解的請求。原因:您對啟用 SSL 的伺服器埠使用純 HTTP。請改用 HTTPS 方案訪問此 URL,請在 example.com 埠 8069 上使用 Apache/2.4.33 (Ubuntu) 伺服器

我還注意到 URL 也更改為 http 版本。

以下是我用於域的虛擬主機配置。

<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 還有另一個虛擬主機文件,這是一個非常標準的文件,配置了 80 和 443 埠。(這僅適用於網站,而不是 odoo)。如果您認為相關,我將發布虛擬主機。

我實際上使用以下修改修復了它。

ServerName MySite

改為

ServerName example.com:8069

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

改為

ProxyPass / http://localhost:9069/
ProxyPassReverse / http://example.com:8069/

我看到這是幾個月前的事,在搜尋後偶然發現了它。如果這對未來的搜尋者有幫助……

我對反向代理配置做了類似的事情,儘管我不必更改ServerName欄位並且ProxyPassReverse不需要埠號。因此,使用您的配置,我會嘗試:

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

引用自:https://serverfault.com/questions/919535