Apache + CentOS 中的反向代理用于向 PostgREST Web 服务器发送 HTTPS 请求

Apache + CentOS 中的反向代理用于向 PostgREST Web 服务器发送 HTTPS 请求

我想向我的 postgREST 网络服务器发出 https 请求,但从设计上讲,它不支持 https。我花了好几天时间,但仍然不知道下一步该怎么做...

我的设置

  • 我的服务器运行的是 CentOS 7.9.2009
  • 我有一个使用 Wordpress 的网站域名,用于提供我的内容home/myuser/public_html
  • 我在服务器上安装了 PostgREST 7.0.1,它在端口 3000 上运行
  • 我正在运行 Apache/2.4.51 (cPanel)

我的问题

  • 以下请求工作正常:http://my-domain.com:3000/my_db_table
  • 我想运行相同的请求,例如:https://my-domain.com/api/my_db_table
  • 我的 Apache 配置位于“包含”文件中,似乎已被加载(因为当我在此文件中故意输入错误的语法时会发生错误)并且它看起来像这样:
<VirtualHost *:443>

    DocumentRoot /
    ServerName my-domain.com
    ServerAlias my-domain
    ErrorLog /home/myuser/public_html/api/error.log
    CustomLog /home/myuser/public_html/api/access.log combined

    SSLEngine on
    SSLUseStapling off
    SSLCertificateFile /etc/ssl/certs/server.my-domain.com.crt
    SSLCertificateKeyFile /etc/ssl/private/server.my-domain.com.key


    <Location /api/ >
         ProxyPreserveHost On
         ProxyPass http://localhost:3000/
         ProxyPassReverse http://localhost:3000/
         RequestHeader set X-Forwarded-Port "443"
         RequestHeader set X-Forwarded-Proto "https"
   </Location>
</VirtualHost>
  • 运行httpd -t回报Syntax OK
  • 在我改变之后我跑sudo systemctl restart httpd
  • 当我尝试发出类似请求时,curl -i https://my-domain.com/api/my_db_table我被重定向到我的 Wordpress 网站的 404 页面
  • 我的 apache 配置文件error.log不包含任何错误(它包含装订错误,我通过SSLUseStapling off在我的配置中添加行解决了该错误)

我不知道该怎么办了。而且由于我没有任何错误日志,我甚至不知道如何开始调试它。如果有人能给我提供任何提示,我会很高兴。

答案1

要检查的一些事项:

  1. SELinux 是否正在运行?如果正在运行,SEBoolean 是否httpd_can_network_connect设置为 1?
  2. 安装了吗mod_proxy
  3. 非代理 VirtualHost 上是否有任何东西使用路径/api?例如,它会阻止对 的调用吗Location?更好的答案:如何使用反向代理正确处理相对 URL

虽然不是 Apache 专家,但我突然想到了这些!

答案2

补充第二点shern89 给出的答案,验证模块mod_proxy_http是否也已安装(使用a2enmod proxy_http来安装它)。

相关内容