程序锅

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于

  • 搜索
基础知识 Etcd LeetCode 计算机体系结构 Kubernetes Containerd Docker 容器 云原生 Serverless 项目开发维护 ELF 深入理解程序 Tmux Vim Linux Kernel Linux numpy matplotlib 机器学习 MQTT 网络基础 Thrift RPC OS 操作系统 Clang 研途 数据结构和算法 Java 编程语言 Golang Python 个人网站搭建 Nginx 计算机通用技术 Git

Nginx简单操作 | Nginx配置SSL证书

发表于 2019-08-12 | 分类于 Nginx | 0 | 阅读次数 2960

Nginx配置SSL证书

0. 实验准备

  1. 阿里云学生机

  2. 域名/网站已经备案

    为什么要备案的呢?做一个遵纪守法的好公民,并且阿里云备案真的很快,我11天就备案好了,备案完成阿里云还给我免费续费11天(相当于阿里云补偿你的)。我的机子刚开始也是没有备案的(主要是嫌麻烦),那时候配置了SSL之后可以使用https访问,用http访问的话阿里云会直接给你拦截。然后我就这么得过且过的用着https,结果有一天我使用https都再也不能访问了,提交工单之后,阿里云的客服人员说,该备案了,然后我就备案了。

  3. 实验中用到的域名(测试域名)是:

    • dawnguo.cn
  4. Nginx version

    nginx/1.10.3 (Ubuntu)

1. Nginx 配置SSL

这边省略了Nginx的安装过程,只讲如何配置Nginx让您的网站可以使用https访问,个人觉得阿里云给的文档已经挺好的了。

1.1 SSL证书的获取

  • 要配置网站可以https访问,SSL证书必不可少。这边使用阿里云免费提供的SSL证书,登录之后找到SSL购买界面,购买免费型DV SSL。

  • 购买证书之后,就是申请绑定域名了。点击左侧申请,填写相关信息即可。

  • 申请成功之后,之后配置需要用到pem和key文件,相应的文件下载在"已签发"这块,点击下载,选择Nginx版本下载之后就可以了。

    • .crt文件:是证书文件,crt是pem文件的扩展名(有时候没有crt只有pem的,所以不要惊讶)
    • .key文件:证书的私钥文件(申请证书时如果没有选择自动创建CSR,则没有该文件)
    • .pem扩展名的证书文件采用Base64-encoded的PEM格式文本文件,可根据需要修改扩展名。

1.2 Nginx上的配置

nginx的相关配置一般都在/etc/nginx/目录,因为nginx版本的不同,该目录中的内容一般都会不同,该目录在我机子上的内容如下所示:

$ ls
conf.d/  fastcgi.conf  fastcgi_params  koi-utf  koi-win  mime.types  nginx.conf  proxy_params  scgi_params  sites-available/  sites-enabled/  snippets/  uwsgi_params  win-utf

nginx.conf是最最最重要的配置文件,其中nginx.conf文件又会把conf.d/目录中.conf文件内容和sites-enabled/目录中的文件内容直接include进来,include语句主要是这几句:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

下面介绍一下我机子上nginx.conf文件的内容,主要是一些基础配置。我们可以看到最后两行include的内容,就是上面的内容。个人建议把一些站点的配置都放到./sites-enabled/或者./conf.d目录中,方便日后管理(增删只有删除相应文件即可)。

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}
http {
        ##
        # Basic Settings
        ##
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        
        ##
        # Gzip Settings
        ##
        gzip on;
        gzip_disable "msie6";
        
        ##
        # Virtual Host Configs
        ##
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}
  • 上面介绍完nginx相关之后,开始正式配置。为了方便日后SSL证书的管理,我们在etc/nginx目录中创建一个cert目录,然后把下载下来的证书拷贝到/etc/nginx/cert目录中。

    $ ls
    dawnguo.cn.key  dawnguo.cn.pem
    
  • 之后进入./sites-enabled/目录,创建一个文件为dawnguo.cn(取名为这个,是为了方便管理)

    $ ls
    dawnguo.cn
    

    之后把下面的内容复制粘贴到dawnguo.cn这个文件中

    server {
        listen 443;
        server_name dawnguo.cn;
        ssl on;
        root /var/www/html;
        index index.html index.htm;
        ssl_certificate  cert/dawnguo.cn.pem;
        ssl_certificate_key cert/dawnguo.cn.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 / {
            index index.html index.htm;
        }
    }
    

    需要注意一下几点:

    • server_name需要配置为你自己的域名昂;
    • root /var/www/html; 这个是你网站的所在的目录;
    • ssl_certificate cert/dawnguo.cn.pem;pem文件的路径;
    • ssl_certificate_key cert/dawnguo.cn.key;ket文件的路径;
  • http的重定向,为了在使用http访问站点时,能自动跳转到https访问,下面我们设置一下重定向

    server {
        listen 80;
        server_name dawnguo.cn;
        rewrite ^(.*)$ https://dawnguo.cn;
    }
    
  • 最后一步重启nginx即可

    $ service nginx restart
    

1.3 题外话,一些小总结

  • 以后相关的配置文件都尽量放到./sites-enabled/或者./conf.d目录中,而不是直接针对nginx.conf直接修改;

  • 对include的理解,include其实是把文件的内容直接include到相关语句出,比如nginx.conf中的内容如下

    http {
            ......
            ##
            # Virtual Host Configs
            ##
            include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
    }
    

    sites-enabled/目录下test文件的内容如下:

    server {
        listen 443;
        	......
        location / {
            index index.html index.htm;
        }
    }
    

    那么等价于

    http {
            ......
            ##
            # Virtual Host Configs
            ##
            server {
                listen 443;
                    ......
                location / {
                    index index.html index.htm;
                }
            }
    }
    
卷死我
dawnguo 微信支付

微信支付

dawnguo 支付宝

支付宝

  • 本文作者: dawnguo
  • 本文链接: /archives/11
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# Nginx # 个人网站搭建
Vim神器 | vim+ctags+cscope+Taglist+Nerdtree打造成sourceinsight
Nginx简单操作 | Nginx 搭建多服务站点
  • 文章目录
  • 站点概览
dawnguo

dawnguo

215 日志
24 分类
37 标签
RSS
Creative Commons
© 2018 — 2024 程序锅
0%