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

服务器安装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 [email protected] -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))