簡體   English   中英

節點js + Nginx + Amazon Linux + SSL

[英]Node js + Nginx + Amazon Linux + SSL

我有一個使用ssl在AWS linux服務器上運行的node js應用程序。 我想將nginx實現為相同。 我用谷歌搜索,並閱讀到如果我在nginx中實現ssl,那么節點應用程序將在http上運行。 因此,我按照以下方式配置了nginx conf並使用普通的http服務器運行了node js應用程序:

listen              443 ssl;
server_name         myserver.com;
ssl_certificate     myserver.chained.crt;
ssl_certificate_key myserver.key;
ssl_client_certificate myserver.crt;
ssl_verify_client optional;
location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header VERIFIED $ssl_client_verify;
    proxy_set_header DN $ssl_client_s_dn;
    proxy_pass http://127.0.0.1:3000;
}

現在,該應用程序可以在http和https上運行。 我希望實現nginx並通過ssl和該應用程序僅在https上運行。 我的方法正確嗎?我想念什么?

我看到您的應用程序在端口3000上運行,您想要做的是使其僅在https上運行是阻止端口3000上對服務器的所有請求(使用aws中的防火牆或安全組規則 ),並且對於每個在端口80上請求,您將需要將其重定向到https版本(端口443)。 像這樣:

server {
    listen         80;
    server_name    my.domain.com;
    return         301 https://$server_name$request_uri;
}

我在關於serverfault的答案中找到了上述規則

upstream app
{
    server 127.0.0.1:3000;
}
server
{

    listen 80;
    listen 443 ssl;

    server_name www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;


    client_header_buffer_size 64k;
    large_client_header_buffers 4 64k;


    if ($scheme = http) {

        return 301 https://$server_name$request_uri;
    }


    location ~ ^/(assets/|images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {

        root /var/www/example.com/public/;

        access_log off;

        expires 24h;

    }


    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$uri$is_args$args;

        proxy_redirect off;


        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";


    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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