Linux安装 Nginx 并配置https环境 Ubuntu Https apt Nginx命令

在Ubuntu 18.04上安装和配置Nginx

1. 安装Nginx

  • Nginx的软件包在Ubuntu默认软件仓库中可用。 安装非常简单,只需键入以下命令:
# 更新软件包
sudo apt update
# 安装Nginx
sudo apt install -y nginx
  • 安装完成后,请检查Nginx服务版本:
sudo nginx -v
  • Nginx安装完毕

Nginx防止中乱码

 server{
     ...
    listen 8088 default_server;
    listen [::]:8088 default_server;
    charset utf-8;  #设置字符集为 utf-8
 }

Nginx配置https环境

  • https简单介绍

根据维基百科的解释:

HTTPS,英语:Hypertext Transfer Protocol Secure)超文本传输安全协议,
用以提供加密通讯及对网络服务器身份的鉴定

开始配置

一、升级 OpenSSL

# 更新源
sudo apt-get update

# 安装openssl依赖库
sudo apt-get install openssl

# 查看安装好的openssl版本号
openssl version

二、去购买域名的地方 或者 腾讯云阿里云等等地方去申请ssl证书 (申请免费的即可,土豪请随意)

三、找一个目录存放nginx的证书文件(一般为两个)

# 在nginx配置目录里创建一个 ssl目录
mkdir  /etc/nginx/ssl
mkdir  /etc/nginx/ssl/private  #存放两个ssl证书
mkdir  /etc/nginx/ssl/certs # 存放openssl生成的dhparam.pem

四、修改Nginx的配置文件

  • 当然你也可以下载到Windows端进行修改避免出现错误
# 使用apt命令安装的Nginx配置文件一般就在这里
vi /etc/nginx/sites-enabled/default
server {  
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    # 这里输入你证书绑定的域名 www解析和  @ 解析 中间以空格隔开
    # www.yuweb.cf
    # yuweb.cf
    server_name www.yuweb.cf yuweb.cf;

    ssl on;
    # 这里输入你证书的存放路径
    ssl_certificate /etc/ssl/private/example_com.pem;
    ssl_certificate_key /etc/ssl/private/example_com.key;
}

五、增加安全性(可选)

  • 以上这么做并不安全,默认是 SHA-1 形式,而现在主流的方案应该都避免 SHA-1,为了确保更强的安全性,我们可以采取迪菲-赫尔曼密钥交换
  • 首先,进入/etc/nginx/ssl/certs目录并生成一个dhparam.pem
cd /etc/nginx/ssl/certs
  • 生成dhparam.pem
openssl dhparam -out dhparam.pem 2048
  • 可选加密位数 根据机器性能来 位数越高越安全 生成时间也越长

  • 1024

  • 2048

  • 4096

  • 生成完毕后,在 Nginx 的 SSL 配置后面加入 就是 server代码块中

server {  
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    # 这里输入你证书绑定的域名 www解析和  @ 解析 中间以空格隔开
    # www.yuweb.cf
    # yuweb.cf
    server_name www.yuweb.cf yuweb.cf;

    ssl on;
    # 这里输入你证书的存放路径
    ssl_certificate /etc/ssl/private/example_com.pem;
    ssl_certificate_key /etc/ssl/private/example_com.key;
    
    ssl_prefer_server_ciphers on;
    # 你的dhparam.pem文件所在位置
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
    keepalive_timeout 70;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.4.4 8.8.8.8 valid=300s;
    resolver_timeout 10s;
    
    add_header Strict-Transport-Security max-age=63072000;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
}

六、添加 访问80端口转发到443端口的配置

  • 新增一个server块
server {
        listen 80;
        listen [::]:80;
        # 主机名 输入你的域名
        server_name yufire.cf www.yufire.cf;
        # 转发到你的 https端口  请输入你的域名
        return 301 https://www.yufire.cf$request_uri;
}

配置完成之后

  • 检查配置文件是否正确
nginx -t
如果出现以下错误
  • 大概意思是
    重复绑定了server name,但这个警告不会影响到服务器运行
  • 解决办法 查看是否配置了两个同样的监听端口 同样的主机名
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
  • 没有问题后重新加载Nginx配置文件
nginx -s reload
  • 在浏览器访问是否成功
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Krio1hfT-1588549492225)(91348C8B2ABC49D6AD90386F81DC2CBF)]

Nginx常用命令

命令 作用
service nginx start 开启Nginx服务
service nginx stop 停止Nginx服务
service nginx restart 重启Nginx服务
nginx -s reload 重新加载Nginx配置文件
nginx -v 查看 Nginx的版本号
nginx -s stop 停止 nginx
nginx -s quit 退出 nginx
nginx -t 检查配置文件是否正确

你可能感兴趣的:(笔记)