Bootstrap

Http 转 https 中 Nginx 的详细配置过程

摘要  本节将简要介绍从 HTTP 到 HTTPS 的配置过程,并完整展示 Nginx 的相关配置信息。

       经过两天断断续续的调试,终于将 http 变成 https 了。现在说说这个安装 ssl 证书的过程。

       服务器是在某云上。这个过程大致分为三个步骤:申请 ssl 证书、配置证书、开启并配置端口。   

       第一步是申请 ssl 证书。    

       这个可参考一分钟带你把http项目升级成https,并且打包上线。申请成功下载后,是一个压缩文件,打开后有两个文档;其中一个是 .key文档,一个是 .pem文档。

       第二步上传证书与配置Nginx 

       1. 将它们上传到服务器。

       从本地 Windows 上传到 远程 Ubuntu,可以用 putty。

       首先在Windows下,访问 PuTTY 官方网站,下载  PuTTY 安装包。比如,我下载的是 putty-64bit-0.81-installer.msi。双击下载文件,就开始执行安装。

       安装完后,可以在 Windows 命令提示符下查看版本

pscp -V

如果安装成功,应该会看到类似输出信息(以下是部分内容,并且实际是不含有行号的):

pscp: Release 0.81
Build platform: 64-bit x86 Windows

       安装完成后,则可以将 Windows 中文件上传到 Ubuntu上。例如下面是Windows的命令提示符下的命令,它将 my.key 上传到了 /certificate 目录中。当然,上传前,先在Ubuntu中用mkdir 创建 certificate 目录。 

pscp C:\\Users\\DELL\\Downloads\\my.key user@remotehost:/certificate/

其中 user@remotehost 要换成您的服务器网址。比如,[email protected],其中123.456.678.1是您服务器的 ip 地址。

       如果只是需要从 Ubuntu 上传到Ubuntu,建议使用 scp 命令。例如:  

scp /local/path/to/file user@remotehost:/remote/path/to/destination/

       2. 配置 Nginx。

       首先,系统是Ubuntu。这时需要停用Apache(用命令 sudo service apache2 stop),而安装 Nginx(安装过程省略)。因为第一步选证书时,就是选的与 Nginx相关的(好像没有 Apache 选项)。另外,由于网页使用了 Php,所以还需要安装php7.2-fpm(安装过程省略)。最后,也是最重要的,是下面 Nginx 的配置。若配置不好,网页会出现 乱码、404 not found、下载(即不是显示内容,而总是下载网页)、无法访问此网站 等问题。

        Nginx 的配置文件是  /etc/nginx/sites-available/default 。可以用 nano 修改,比如

$ nano  /etc/nginx/sites-available/default

这时就在控制台下打开了 default 文件。修改后用 Ctrl+o 再 回车 保存文档内容,Ctrl+x 是退出。配置好后,是启动,用 sudo systemctl start nginx。重新启动 Nginx 命令是  sudo systemctl restart nginx。停止Nginx 是 sudo systemctl stop nginx。

# /etc/nginx/sites-available/default  文档的内容

server {
    listen 443 ssl;
    server_name www.my.com; #换成您的网址
    charset utf-8; # 设置字符编码为UTF-8
    ssl_certificate /pathl/to/my.pem; #换成您的实际的 .pem文档的路径
    ssl_certificate_key /path/to/my.key; #换成您的实际的 .key文档的路径

    root /var/www/html; #一般网页都在这儿存放。比如 /var/www/html/index.html
    index index.php index.html index.htm; #由于我的网页是 index.php,所以有 index.php

    location / {
        try_files $uri $uri/ /index.php?$query_string; #若您的网页是index.html, 那么好像php需要改成html
        add_header Content-Type text/html;
    }

    # PHP-FPM配置
    location ~ \\.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; #根据实际安装版本调整数字或路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 静态文件配置
    location ~* \\.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires max;
    }
}

# HTTP重定向到HTTPS
server {
    listen 80;
    server_name www.my.com; #//换成您的网址
    return 301 https://$host$request_uri;
}

types {
    text/html html;
    # 其他 MIME 类型...
}
       第三步是开启并配置端口

       需要注意的是云上要开启并配置443端口(过程省略),否则网页来不了,永远显示好像是“无法访问此网站”。另外,80端口也不要被占用。关闭Apache,以免它占用80端口。

       对于大多数现代Linux发行版,可以用下列命令来禁用Apache开机自启:

sudo systemctl disable apache2

可以进一步确认 apache2 服务的状态是否为禁用状态,使用如下命令:

systemctl is-enabled apache2

若输出为 disabled,则说明已经成功地禁用了 apache2 的自启动功能。

       执行完以上步骤后,就可以在浏览器中输入网址,比如 www.yours.com,这时,浏览器会自动添加 “https://” 。

;