Ruby on rails 使用SSL和Nginx运行Puma
我有运行在Rails API上的Angular应用程序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=*实例的
- 网络服务器:Nginx
- 应用服务器:彪马
- SSL证书:LetsEncrypt
- 托管地点:运行Ubuntu 16.04.3 LTS的AWS EC2
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。