[英]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配置有問題,在不了解您的設置的情況下很難告訴您出了什么問題,但至少要確保已正確設置了域的名稱服務器以及指向您AWS的A記錄-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,這樣您的瀏覽器就不會緩存響應。
有關更多信息,請參見這些資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.