Nginx设置Https代理服务

Http和Https

  • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

  • HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

  • HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

创建证书文件

openssl genrsa -out private.key 1024  
#-out 参数指定密钥文件存放的位置和名字,1024是指密钥文件的长度,一般为1024或者2048

openssl req -new -key private.key -out cert_req.csr
#指定密钥密钥文件来生成一个ca请求
#这个步骤会要求填入国家区域以及域名等信息
#最重要的一行是Common Name,需要填入与服务器关联的域名,或者是您服务器的公共IP地址

penssl x509 -req -days 365 -in cert_req.csr -signkey private.key -out server_cert.crt
# 相关参数说明
# -req: 此子命令指定我们要使用X.509证书签名请求(CSR)管理。“X.509”是SSL和# TLS为其密钥和证书管理所遵循的公钥基础结构标准。我们想要创建一个新的X.509证书,所以我们使用这个子命令
# -x509:通过告诉实用程序我们要创建自签名证书而不是生成证书签名请求(通常会发生)来进一步修改上一个子命令
# -nodes:这告诉OpenSSL跳过用密码保护我们的证书的选项。当服务器启动时,我们需要Nginx能够在没有用户干预的情况下读取文件。密码短语会阻止这种情况发生,因为我们必须在每次重启后输入密码
# -days 365:此选项设置证书被视为有效的时间长度。我们在这里设置了一年

修改nginx配置文件

server {

    listen 443 ssl;
    server_name localhost default;
    ssl_certificate         /etc/ssl/server_cert.crt; 
        #证书和密钥文件均放在nginx/conf/ssl目录下
        ssl_certificate_key     /etc/ssl/private.key;
        ssl_session_cache    shared:SSL:10m;
        #设置存储session参数的缓存的类型和大小
        ssl_session_timeout  1m;
        #指定客户端可以重用会话参数的时间
        ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        root        /web-app;
        index       index.html index.htm;

        location  / {
            try_files $uri $uri/ /index.html;
            proxy_pass   http://xxx;

        }
}

你可能感兴趣的:(Nginx设置Https代理服务)