Nginx之https

在如今越来越强调隐私与数据安全的情况下,我们的资源访问当然也要尽可能的安全,我们知道 HTTP 协议是明文传输的,因此不能保证数据的安全性,而 HTTPS 则是对传输的数据进行了加密,提高数据传输的安全性。下面就介绍一下为 Nginx 配置 Https 模块的方式。

配置示例:

server{
        listen       80;
        server_name  api.yj.com;
        # force redirect http to https
        rewrite ^ https://$http_host$request_uri?permanent;
}

server {
        listen 443 ssl;
        # ssl on;
        server_name api.yj.com;
        index index.html index.htm index.jsp index.php;
        if ( $query_string ~* ".*[\;'\<\>].*" ){
                return 404;
        }

        location / {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:9090;
        }

        ssl_certificate /usr/local/nginx/ssl/yj.com.cer;
        ssl_certificate_key /usr/local/nginx/ssl/cert.key;

        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;
        access_log      /usr/local/nginx/logs/api.yj.com.access.log;
        error_log       /usr/local/nginx/logs/api.yj.com.error.log;
}
  • 把 ssl on; 这行去掉,ssl 写在 443 端口后面。这样 http 和 https 的链接都可以用。然后上方的第一个 server 对 http 链接进行了强制重定向到 https。这样就可以实现用户输入 http 的时候不会访问不到服务并且也能够跳转到 https 协议。
  • ssl_certificate 配置的就是我们的 https 的证书,也就是我们的公钥。当我们开启 https 协议后,客户端与服务器端的通信将会使用该证书(公钥)来进行数据的加密。
  • ssl_certificate_key 配置的就是我们的 https 的密钥(私钥),该文件的作用就是将加密的数据进行解密。
  • 证书的获取有多种途径,可以自行网卡搜索。目前既可以从多个 CA 发行商处申请免费的 SSL 证书,也可以购买付费的商用 SSL 证书,具体选择视情况而定。甚至也可以自己生成自签名的 SSL 证书,但此类证书不会被浏览器信任,所以可能还需要手动安装证书。

猜你喜欢

转载自blog.csdn.net/qq_24313635/article/details/82882538