Nginx 代理传递适用于 https 但不适用于 http

Nginx 代理传递适用于 https 但不适用于 http

我想将 HTTP 流量和 HTTPS 流量重定向到后端 Flask 应用程序,并且我的 nginx.conf 中有下面的代码片段,它适用于 https,但不适用于 http

服务器 {
听80;
听443 ssl;
ssl_certificate /usr/local/nginx/server.crt;
ssl_certificate_key /usr/local/nginx/server.key;

地点 / {
        代理重定向关闭;
        代理缓存关闭;
        代理密码 http://127.0.0.1:5000;
        proxy_set_header 主机 $http_host;
        proxy_set_header X-真实IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

有人能指点一下吗?配置文件片段中有什么明显的问题吗?还是我安装的 Nginx 有误?

谢谢!

答案1

我相信您需要server为 HTTP 设置单独的块。例如:

server {
listen 80;

location / {
        proxy_redirect off;
        proxy_cache off;
        proxy_pass         http://127.0.0.1:5000;
        proxy_set_header   Host             $http_host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}
}

然后您可以listen 80;从现有server块中删除它。

答案2

我用 yum 在 Redhat16 机器上安装了 nginx。删除 etc/nginx/conf.d 目录的内容后,一切都按预期运行。似乎该目录中的某些东西正在推翻 http proxy_pass。

相关内容