Nginx环境下配置Https

一:什么是Https

SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。

SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。

提示:SSL网站不同于一般的Web站点,它使用的是“HTTPS”协议,而不是普通的“HTTP”协议。因此它的URL(统一资源定位器)格式为“https://网站域名”。

二:Https的Nginx环境搭建

使用阿里云的证书服务,阿里云-控制台-安全(云盾)-证书服务,购买证书,选择免费型DV SSL,补全证书,证书状态变成已签发后,点击下载,下载证书for Nginx,在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。

不建议直接修改nginx.conf文件,建议在sites-available目录下创建一个Http协议配置文件和一个Https协议配置文件,然后在sites-enabled目录下创建前两个文件的链接文件,然后直接编辑这两个链接文件。

Http协议配置文件(80端口301跳转)

server {
    listen 80;

    server_name 网站域名;

    return 301 https://网站域名;
}

Https协议配置文件

server {
    listen 443;

    root /var/www/项目名称/public;
    index index.php index.html index.htm;

    server_name 网站域名;

    ssl on;
    ssl_certificate   cert/pem文件;
    ssl_certificate_key  cert/key文件;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass 127.0.0.1:9000;
    }
}

重启Nginx

service nginx restart

你可能感兴趣的:(Nginx环境下配置Https)