无法使用 nginx 调用我的 rails 服务器,得到 Puma::HttpParserError
Can't call my rails server with nginx, got Puma::HttpParserError
我的 nginx / puma 配置有问题。当我启动 rails 服务器并尝试与其交互时,没有任何反应,我的请求卡在浏览器网络中。另外,我在控制台中收到此错误:
HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
我是 运行 端口 3000 上的 ngrok,但即使它不是 运行,我仍然会收到错误消息。
我看到了很多类似的问题(比如 this one 没有答案)但是 none 对我有帮助 :(
我用 nginx 检查了我的 ssl 配置,它被禁用了
grep -r ssl_protocol /etc/nginx
的输出给出
/etc/nginx/nginx.conf: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
符合预期
我已经清除了我的浏览器缓存/历史记录和 cookies + 重新启动了我的 nginx 服务和 rails 服务器
config.force_ssl
在我的 environment/develop.rb 中被注释掉了(我肯定在这个环境下工作)所以我想我没有在 https
我还在 /etc/hosts
中注释掉了 ipv6 conf,并且设置了这两行:
127.0.0.1 localhost
127.0.0.1 app.example.com
这是我的默认配置的一部分:
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://app.example.com:9000;
}
location /uploads/ {
proxy_pass https://example.s3.amazonaws.com/uploads/;
}
location /archives/ {
proxy_pass https://example.s3.amazonaws.com/archives/;
}
location /container/ {
proxy_pass https://example.s3.amazonaws.com;
}
}
这里有什么我忘记检查的吗?我不太习惯 rails,也许我缺少一些基本知识:)
弄清楚发生了什么:
我试图将我的 API 与 angular 前端引擎连接起来,我在这里缺少的是我有一个 oauth conf 可以使用 https 而不仅仅是 http 添加到 angular 环境文件中.
base_url: "http://localhost:3000/",
oauth: "https://localhost:3000/",
它与我的 rails 服务器无关,也与 nginx 无关!
我的 nginx / puma 配置有问题。当我启动 rails 服务器并尝试与其交互时,没有任何反应,我的请求卡在浏览器网络中。另外,我在控制台中收到此错误:
HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
我是 运行 端口 3000 上的 ngrok,但即使它不是 运行,我仍然会收到错误消息。
我看到了很多类似的问题(比如 this one 没有答案)但是 none 对我有帮助 :(
我用 nginx 检查了我的 ssl 配置,它被禁用了
grep -r ssl_protocol /etc/nginx
的输出给出/etc/nginx/nginx.conf: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
符合预期
我已经清除了我的浏览器缓存/历史记录和 cookies + 重新启动了我的 nginx 服务和 rails 服务器
config.force_ssl
在我的 environment/develop.rb 中被注释掉了(我肯定在这个环境下工作)所以我想我没有在 https我还在
/etc/hosts
中注释掉了 ipv6 conf,并且设置了这两行:127.0.0.1 localhost 127.0.0.1 app.example.com
这是我的默认配置的一部分:
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://app.example.com:9000;
}
location /uploads/ {
proxy_pass https://example.s3.amazonaws.com/uploads/;
}
location /archives/ {
proxy_pass https://example.s3.amazonaws.com/archives/;
}
location /container/ {
proxy_pass https://example.s3.amazonaws.com;
}
}
这里有什么我忘记检查的吗?我不太习惯 rails,也许我缺少一些基本知识:)
弄清楚发生了什么: 我试图将我的 API 与 angular 前端引擎连接起来,我在这里缺少的是我有一个 oauth conf 可以使用 https 而不仅仅是 http 添加到 angular 环境文件中.
base_url: "http://localhost:3000/",
oauth: "https://localhost:3000/",
它与我的 rails 服务器无关,也与 nginx 无关!