Ubuntu NGINX配置为将SSL请求代理到Sinatra服务器

Ubuntu NGINX配置为将SSL请求代理到Sinatra服务器,ubuntu,amazon-web-services,nginx,ssl-certificate,reverse-proxy,Ubuntu,Amazon Web Services,Nginx,Ssl Certificate,Reverse Proxy,我有一把钥匙,一张证书和一张链证书。 该域看起来像automation.mydomain.com 我有一台Sinatra服务器在localhost:3000上运行,通过curl localhost:3000/test确认 我想将端口80和端口443的流量重定向到3000。这是我的/etc/sites enabled/sinatra配置: upstream app_aggregator { server 127.0.0.1:3000; keepalive 8; } # the n

我有一把钥匙,一张证书和一张链证书。 该域看起来像automation.mydomain.com

我有一台Sinatra服务器在
localhost:3000
上运行,通过
curl localhost:3000/test
确认

我想将端口80和端口443的流量重定向到3000。这是我的
/etc/sites enabled/sinatra
配置:

upstream app_aggregator {
    server 127.0.0.1:3000;
    keepalive 8;
}

# the nginx server instance
server {
    listen 0.0.0.0:80;
    server_name automation.mydomain.com my_site;
    access_log /var/log/nginx/aggregator.log;

    # pass the request to the node.js server with the correct headers
    # and much more can be added, see nginx config options
    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://app_aggregator/;
      proxy_redirect off;
    }
 }
注意:上述方法不起作用(导致
错误名称\u未\u解决
)。我不知道如何将密钥、普通证书和链证书添加到这个组合中

我以前用node.js配置解决了这个问题,它很高兴地使用了密钥和SSL,但我从未使用过nginx


值得注意的是,我使用的是Amazon AWS,只打开了80和443。

您的域的DNS配置有问题,如果不了解更多设置,很难告诉您出了什么问题,但至少要确保您的域名服务器设置正确,并且有一个指向AWS实例的A记录

使用Nginx配置HTTPS时需要注意的一点是,您的证书文件应该包括您可能拥有的任何中间证书。有关更多信息,请参阅下面的Nginx文档链接

使用Nginx设置SSL非常简单,只需将以下3行添加到配置中即可:

listen 0.0.0.0:443 ssl;
ssl_certificate /path/to/your/certificate
ssl_certificate /path/to/your/certificate_key
如果要强制使用HTTPS,可以在现有服务器块上禁用HTTP(端口80),并创建一个附加块,如下所示:

server {
    listen 0.0.0.0:80;
    server_name automation.mydomain.com my_site;
    return 301 https://$server_name$request_uri;
}
这会将任何HTTP请求重定向到启用HTTPS的服务器。请注意,我建议在测试时将301更改为302,这样您的浏览器就不会缓存响应

有关更多信息,请参阅这些参考资料