Apache-2.4
帶有 SSL 的 apache 反向代理給出“400 錯誤請求”
我有一個 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/