HTTPS / PHP / NGINX:启用HTTPS时,php://输入数据为NULL

时间:2019-02-21 16:58:30

标签: php ssl nginx https

这与此question有关。我发现,当我在YII上检查HTTPRequest时,Yii::app()->request使用file_get_contents('php://input')$HTTP_RAW_POST_DATA来从前端获取请求。当SSL禁用但启用后,此数据将消失。我看到了类似的question,但没有具体的解决方案,尽管有一个答案不鼓励在将http强制为https时使用302重定向。我需要在我的api服务器上使用此机制来将http重定向到https。如何在不丢失发布数据的情况下将http重定向到https?在此link上可以找到我的Nginx配置。

我希望这一问题能得到彻底解决,因为我已经花了一个多星期的时间解决了这个问题。

1 个答案:

答案 0 :(得分:0)

如果要将HTTP重定向到https,则必须更新nginx conf文件。

Nginx应该收听http:

    server {
            listen          80;
            server_name     api.test.com;
            return 301 https://api.test.com$request_uri;
    }

    server {
            listen          443 ssl http2;
            server_name     api.test.com;

            root /var/apps/myapp/current/workspace/api;
            ...

http2是可选的