2

我有一个密钥,证书和链证书。 该域看起来像automation.mydomain.comNGINX配置代理到Sinatra服务器的SSL请求

我有一个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; 
    } 
} 

注意上述不起作用(http://automation.mydomain.com/结果ERR_NAME_NOT_RESOLVED)。我不知道如何将密钥,普通证书和连锁证书添加到该混合中。

我以前用一个node.js配置解决了这个问题,它愉快地使用了密钥并且SSL工作得很好,但是我从来没有用过nginx。

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

回答

3

您的域的DNS配置存在问题,如果不知道更多关于您的设置的信息,很难告诉您出现了什么问题,但至少要确保您的域名服务器已正确设置并且A记录指向您的AWS实例。

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

设置SSL nginx的可能是因为添加这些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,以便您的浏览器不会缓存响应。

见这些资源以获取更多信息

相关问题