![从 apache 代理的 nodejs:代理服务器从上游服务器收到无效响应](https://linux22.com/image/710236/%E4%BB%8E%20apache%20%E4%BB%A3%E7%90%86%E7%9A%84%20nodejs%EF%BC%9A%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%8E%E4%B8%8A%E6%B8%B8%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%94%B6%E5%88%B0%E6%97%A0%E6%95%88%E5%93%8D%E5%BA%94.png)
我有 nodejs 服务器和一些静态内容需要提供。我使用 apache 2.4 来实现这个目的,因为我需要在同一台机器上配置多个主机。
我的 apache 2.4 中的虚拟主机有以下配置
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName mydomain.co.in
ServerAlias mydomain.co.in
ProxyPass /api http://127.0.0.1:3001/api
ProxyPassReverse /api http://127.0.0.1:3001/api
DocumentRoot /root/VEFA-test-admin/vefa-admin/platforms/browser/www
<Directory /root/VEFA-test-admin/vefa-admin/platforms/browser/www>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/encrypt/live/mydomain.co.in/fullchain.pem
SSLCertificateKeyFile /etc/encrypt/live/mydomain.co.in/privkey.pem
</VirtualHost>
</IfModule>
我的 nodejs 服务器在同一台机器的 portt 3001 上运行。问题是使用 mydomain.co.in 访问我的网站的用户可以看到该页面。但在一种情况下,我将用户重定向到支付网关,而支付网关在付款后将用户重定向回我的网站。当支付网关将用户重定向到我的网站时,就会出现问题。
apache 错误日志显示如下:
[Thu Sep 07 12:08:06.291298 2017] [proxy_http:error] [pid 12226:tid 139763780601600] (20014)Internal error (specific information not available): [client 219.91.211.175:11159] AH01102: error reading status line from remote server 127.0.0.1:3001, referer: https://test.payumoney.com/payment/postBackParam.do
[Thu Sep 07 12:08:06.291358 2017] [proxy:error] [pid 12226:tid 139763780601600] [client 219.91.211.175:11159] AH00898: Error reading from remote server returned by /api/u/payments/success, referer: https://test.payumoney.com/payment/postBackParam.do
我在这里做错了什么?
我已经尝试了下面提到的所有解决方案
我尝试过使用 Keepalive on、ProxyBadHeader Ignore,但没有任何效果。有人能帮助我吗?
答案1
代理的应用程序使用的不是有效的 HTTP。nodejs 进程对 Apache 发出的 HTTP 请求的响应返回的内容不是 HTTP。我不知道该如何解释它...