我想向我的 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
要检查的一些事项:
- SELinux 是否正在运行?如果正在运行,SEBoolean 是否
httpd_can_network_connect
设置为 1? - 安装了吗
mod_proxy
? - 非代理 VirtualHost 上是否有任何东西使用路径
/api
?例如,它会阻止对 的调用吗Location
?更好的答案:如何使用反向代理正确处理相对 URL
虽然不是 Apache 专家,但我突然想到了这些!
答案2
补充第二点shern89 给出的答案,验证模块mod_proxy_http
是否也已安装(使用a2enmod proxy_http
来安装它)。