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,以便您的瀏覽器不會緩存響應。

見這些資源以獲取更多信息

相關問題