将 SSL 请求代理到 Sinatra 服务器的 NGINX 配置
NGINX configuartion to proxy SSL requests to a Sinatra server
我有密钥、证书和链证书。
域看起来像 automation.mydomain.com
我在 localhost:3000
上有一个 Sinatra 服务器 运行,已通过 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。
您的域的 DNS 配置有问题,在不了解您的设置的情况下很难告诉您哪里出了问题,但至少要确保您的域的名称服务器设置正确并且 A-记录指向您的 AWS 实例。
使用 Nginx 配置 HTTPS 时需要注意的重要事项是您的证书文件应包含您可能拥有的任何中间证书。有关详细信息,请参阅下面的 link 到 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,这样您的浏览器就不会缓存响应。
查看这些资源以获取更多信息
我有密钥、证书和链证书。 域看起来像 automation.mydomain.com
我在 localhost:3000
上有一个 Sinatra 服务器 运行,已通过 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。
您的域的 DNS 配置有问题,在不了解您的设置的情况下很难告诉您哪里出了问题,但至少要确保您的域的名称服务器设置正确并且 A-记录指向您的 AWS 实例。
使用 Nginx 配置 HTTPS 时需要注意的重要事项是您的证书文件应包含您可能拥有的任何中间证书。有关详细信息,请参阅下面的 link 到 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,这样您的浏览器就不会缓存响应。
查看这些资源以获取更多信息