nginx和后端服务器之间的2路SSL

时间:2015-11-02 07:12:33

标签: node.js ssl nginx

我在Node.js上有一个后端服务器,我正在尝试在Nginx和这个后端服务器之间设置双向SSL。

但我得到一个错误: 2015/11/02 06:51:02 [error] 12840#12840: *266 upstream SSL certificate does not match "myLocalMachine" while SSL handshaking to upstream,

这是我设置proxy_ssl_verify on的时候。如果它off那么它工作正常。以下是我的Nginx设置:

upstream myLocalMachine {
    server MyPublicIP:8888;
}

server {
    listen 8222 ssl;
    proxy_cache two;
    ssl_certificate /etc/nginx/ssl/server-cert.pem;
    ssl_certificate_key /etc/nginx/ssl/server-key.pem;
    ssl_client_certificate /etc/nginx/ssl/client-cert.pem;
    ssl_verify_client on;
    location / {
            proxy_ssl_session_reuse off;
            proxy_ssl_verify on;
            proxy_ssl_trusted_certificate /etc/nginx/ssl/backend-server-cert.pem;
            proxy_ssl_certificate /etc/nginx/ssl/server-cert.pem;
            proxy_ssl_certificate_key /etc/nginx/ssl/server-key.pem;
            proxy_ssl_password_file /etc/nginx/ssl/pwd.pass;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_pass https://myLocalMachine;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_cache_valid any   1m;
            proxy_cache_min_uses 1;
            #proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
            proxy_cache_methods GET HEAD POST;
            proxy_cache_key "$request_body";
    }
}

1 个答案:

答案 0 :(得分:0)

解决方案:

我在证书中使用了url,但我说:example.com但是我使用了一些 上游和proxy_pass中的自定义名称为myLocalMachine,我将其替换为url。

在上游区块中使用网址& proxy_pass如下

upstream example.com {
    # ip & ports are for examples
    server 11.11.11.11:2222;
}

proxy_pass https://example.com;