Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用SSL和Nginx运行Puma_Ruby On Rails_Ssl_Nginx - Fatal编程技术网

Ruby on rails 使用SSL和Nginx运行Puma

Ruby on rails 使用SSL和Nginx运行Puma,ruby-on-rails,ssl,nginx,Ruby On Rails,Ssl,Nginx,我有运行在Rails API上的Angular应用程序 网络服务器:Nginx 应用服务器:彪马 SSL证书:LetsEncrypt 托管地点:运行Ubuntu 16.04.3 LTS的AWS EC2 我可以使用SSL为我的Angular应用程序提供服务,但在SSL上运行Rails API时遇到了问题。在production.rb中,我添加了config.force\u ssl=true。我使用Rails\u ENV=production Rails server--binding=*实例的

我有运行在Rails API上的Angular应用程序

  • 网络服务器:Nginx
  • 应用服务器:彪马
  • SSL证书:LetsEncrypt
  • 托管地点:运行Ubuntu 16.04.3 LTS的AWS EC2
我可以使用SSL为我的Angular应用程序提供服务,但在SSL上运行Rails API时遇到了问题。在production.rb中,我添加了
config.force\u ssl=true
。我使用
Rails\u ENV=production Rails server--binding=*实例的公共ip*
运行Rails服务器。 以下是我的api nginx配置文件:

upstream app{
    server localhost:3000;
}
server {
    listen 80;
    listen [::]:80;

    server_name api.domain.com;
    return 302 https://$server_name$request_uri;
}
server{

    #SSL Configuration

    listen 443 ssl;
    listen [::]:443 ssl;
    include snippets/snakeoil.conf;

    server_name api.domain.com;
    location / {
            proxy_pass https://app;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
这是我包含的snakeoil.conf文件:

ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem;

当我向api.domain.com发出请求时,我得到一个502错误网关。Rails抛出这个
2018-02-19 07:07:02+0000:HTTP解析错误,格式错误的请求():#Puma只理解HTTP请求,但您强制它处理https请求


将“代理通行证”替换为“代理通行证”应该可以解决您的问题

如果您使用的是api vai http,那么将其替换为https,因为您使用的是SSL。我使用的是https。此外,第一个服务器块无论如何都会将请求重定向到https。