美文网首页
服务器安装nginx 并配置支持HTTPS(ssl)

服务器安装nginx 并配置支持HTTPS(ssl)

作者: 花儿的爸爸 | 来源:发表于2018-04-26 15:22 被阅读262次

    服务器安装nginx 并配置支持HTTPS(ssl)

    服务器环境: ubuntu16.04

    域名:xxxx.com

    证书服务:Let's Encrypt

    安装nginx

    安装之前请停掉端口80相关的程序

    查看端口占用情况,列出所有的pid

    sudo lsof -i :80
    

    杀掉占用80端口进程,根据pid

    sudo kill -9 xxx
    

    安装nginx

    sudo su
    apt-get update
    apt-get install nginx
    

    安装成功后nginx相关目录如下

    /usr/sbin/nginx   主程序
    /etc/nginx        存放配置文件
    /usr/share/nginx  存放静态文件
    /var/log/nginx    存放日志
    

    安装成功后查看nginx是否启动,nginx会占用80端口

    sudo lsof -i :80
    

    成功启动大概如下,看到nginx存在表示成功

    COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
    nginx   17737     root    6u  IPv4 31827669      0t0  TCP *:http (LISTEN)
    nginx   17737     root    7u  IPv6 31827670      0t0  TCP *:http (LISTEN)
    nginx   32138 www-data    6u  IPv4 31827669      0t0  TCP *:http (LISTEN)
    nginx   32138 www-data    7u  IPv6 31827670      0t0  TCP *:http (LISTEN)
    

    如果没有成功,则查看是否还有其他程序占用80端口,并kill掉,然后执行如下语句启动nginx

    nginx -s reload
    

    执行以上语句有可能报类似如下错误

    open() "/run/nginx/nginx.pid" failed (2: No such file or directory)
    

    报错原因是因为nginx重启指定需要有运行的进程id,但由于nginx初次启动失败,所以并没有相关pid进程,也就没有重启的说法,此时需要以下指令让nginx启动,-c 后面的目录根据个人nginx安装目录决定。

    nginx -c /etc/nginx/nginx.conf
    

    域名解析到ip地址

    进入nginx配置文件夹

    cd /etc/nginx/conf.d
    vi xxx.conf  // 配置文件名称根据自己的需求设置
    

    配置内容

    注意:配置内容中不要使用 // 注释,需要注释某行使用 #,粘贴时注意将 //的内容删除

    server {
        listen       80;
        server_name xxxx.com;  // U域名
        location / {
                root /home/ubuntu/data/nodeServer/public;   // 这里是前端静态文件的绝对路径
                index  index.html index.htm;                // 入口文件
        }
    }
    

    配置成功后保存退出运行检测指令,看到 test is successful 表示配置成功

    到此即可输入域名访问

    nginx -t
    

    配置https证书

    在官网筛选自己系统相关的配置后得到如下安装命令,依次执行。

    $ sudo apt-get update
    $ sudo apt-get install software-properties-common
    $ sudo add-apt-repository ppa:certbot/certbot
    $ sudo apt-get update
    $ sudo apt-get install python-certbot-nginx 
    

    获取并安装证书

    运行下面的命令获取证书,这个命令同时会为你更改 Nginx 配置文件(并且重启)

    certbot --nginx
    

    以上顺利的话访问 https://xxxx.com 就能看到那把绿色的锁.

    自动续签

    Let's Encrypt 签发的证书有效期90天,到期后用如下指令续签,也可以自己写个脚本自动续签.

    certbot renew --dry-run
    

    手动生成Let's Encrypt的证书配置方法如下

    先停止nginx服务

    nginx -s stop
    

    生成域名证书

    邮箱是验证邮箱,需要自己的有效邮箱,成功能看到提示。证书默认在 /etc/letsencrypt/live/xxxx.com路径下

    certbot certonly --standalone --email your@email.com -d xxxx.com
    

    配置nginx

    进入nginx配置文件夹,添加xxxx.com文件,文件路径依据个人的nginx安装路径

    cd /etc/nginx/sites-enabled/
    vi xxxx.com
    

    配置内容,切记删除 // 和后面的内容

    server {
        listen 443;
        server_name xxxx.com;
        ssl on;
        root /home/ubuntu/data/nodeServer/public;  // 个人静态资源绝对路径
        index index.html index.htm;                // 入口文件
        ssl_certificate  /etc/letsencrypt/live/xxxx.top/fullchain.pem;   // 证书目录
        ssl_certificate_key /etc/letsencrypt/live/xxxx.top/privkey.pem;  // 证书目录
        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;
        }
    }
    

    保存退出,测试配置

    nginx -t 
    

    成功后重启nginx服务即可。

    相关文章

      网友评论

          本文标题:服务器安装nginx 并配置支持HTTPS(ssl)

          本文链接:https://www.haomeiwen.com/subject/hmxmlftx.html