簡體   English   中英

NGINX配置以將SSL請求代理到Sinatra服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM