我有一把钥匙,证书和连锁证书。 该域看起来像automation.mydomain.com
我有一个运行在localhost:3000
上的Sinatra服务器,通过curl localhost:3000/test
确认。
我想redirect端口80和端口443stream量到3000.这是我的/etc/sites-enabled/sinatra
configuration:
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; } }
请注意,上述function无效( http://automation.mydomain.com/结果为ERR_NAME_NOT_RESOLVED
)。 我不知道如何将密钥,普通证书和连锁证书添加到这个组合中。
过去我用一个node.jsconfiguration文件解决了这个问题,它愉快地使用了密钥,SSL工作得很好,但是我从来没有用过nginx。
值得注意的是,我正在使用Amazon AWS,只打开了80和443。
您的域名的DNS配置出了问题,如果不知道更多关于您的设置的信息,很难告诉您出现了什么问题,但至少要确保您的域名服务器已正确设置,并且有一条A记录指向您的AWS -instance。
使用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,以便浏览器不会缓存响应。
请参阅这些资源了解更多信息