您的位置:首页 > 运维架构 > Nginx

Nginx配置安全访问

2020-02-17 09:32 537 查看

Nginx配置安全访问

  • 3. 安全访问介绍
  • 4. 安全访问配置
  • 5. 写在后面
  • 1. Nginx介绍及下载资源

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强

    Nginx下载资源(Linux版本):nginx-1.9.5.tar.gz

    Nginx下载资源(Windows版本):nginx-1.17.6.zip

    2. Nginx安装

    本文中所介绍的相关安装均是本站提供的版本安装过程,其他版本安装时请注意版本信息修改

    2.1 在Windows下安装

    下载完成之后,将下载的zip压缩包解压到我们需要安装的位置,这里我解压到 D:\nginx下,解压之后即算完成了安装过程,可以在环境变量中配置相关环境信息,但是Windows下没必要配置这些信息,可以在cmd控制台中直接到该安装目录下进行操作。

    启动方式:

    方式1:直接点击 nginx.exe ,之后在浏览器中访问 localhost
    即可查看是否运行成功
    方式2:打开 cmd控制台,这里以我安装路径为例,运行完下面的内容之后,打开浏览器,访问localhost
    即可查看是否运行成功

    D:
    cd nginx
    ./nginx.exe

    运行成功后,会显示如下图所示内容

    在windows下Nginx相关命令:

    nginx -t  #查看配置文件是否有错误
    nginx -s reload  #重启nginx,重新加载nginx
    nginx -s quit  #关闭nginx

    2.2 在Liunx下安装

    安装之前,检查并安装Nginx需要的环境,如果系统中原安装有Nginx,则可跳过这一步:

    gcc -v	#执行完后之后,出现版本信息,则安装过该环境,否则执行下一步
    yum -y install gcc	#安装gcc环境
    yum -y install pcre-devel	#安装pcre环境
    yum -y install zlib zlib-devel	#安装zlib
    
    #如果需要支持ssl,则安装openssl
    yum -y install openssl openssl-devel

    也可以一个命令安装上述四个环境:

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

    进入安装包所在目录,解压安装包(这里以本文提供的资源为例,我将资源放置在 /home中),执行下面的命令:

    cd /home
    tar -zxvf nginx-1.9.5.tar.gz /home/nginx
    cd /home/nginx

    解压完成后,可以进入安装程序,这里安装暂时执行正常的安装过程,不考虑需要安全访问的相关模块。依次执行下列相关命令:

    ./configure	#执行后将默认安装在 **/usr/local/nginx**
    make
    make install

    执行完成后,检查是否安装成功:

    whereis nginx

    执行之后出现下面所示内容即安装成功,否则安装步骤重新安装:

    在Linux下Nginx相关命令:

    cd /usr/local/nginx/sbin
    ./nginx	#启动Nginx
    ./nginx -t  #查看配置文件是否有错误
    ./nginx -s reload  #重启nginx,重新加载nginx
    ./nginx -s stop  #关闭nginx

    3. 安全访问介绍

    这里简单的介绍一下本文中提到的安全访问,这里提到的安全访问指的是 HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)访问,HTTPS在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,具体实现是通过SSL层,本文中提到的安全配置也就是在Nginx下进行SSL的配置。

    4. 安全访问配置

    本文中配置的安全访问是基于阿里云平台的服务器,且操作系统为Cent OS

    在Nginx下配置安全访问,需要安全证书,这里以阿里云平台上的服务器做案例,使用的安全证书为免费的证书,证书申请请按照阿里文档进行操作,本文不予赘述。当申请完成后,即可选择下载证书配置的平台,选择Nginx,最终就会得到一个压缩包,解压该压缩包,可以得到下面的文件:

    将上述文件上传至服务器中,这里我统一改名为 cert.keycert.pem,上传文件放置于Nginx安装目录下的 conf 下的 cert文件夹中,也可放置在系统别的文件夹下,配置时注意路径即可。上传完成之后,修改Nginx配置文件如下(仅展示安全配置模块的部分配置):

    server {
    listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    server_name www.example.com;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
    root html;
    index index.html index.htm;
    ssl_certificate cert/cert.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cert/cert.key;   #将domain name.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 / {
    root html;   #站点目录。
    index index.html index.htm;
    }
    }

    修改完配置后,通过下面的命令查看配置是否修改正确:

    /usr/local/nginx/sbin/nginx -t

    如果配置文件没有问题,将如下图所示:

    按照本文的配置,将可能会出现下面的错误信息:

    nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.c

    出现上述错误原因是没有安装SSL模块 ngx_http_ssl_module,本文安装过程中已经将需要的依赖环境都安装完成,只需要安装该模块即可,首先备份好我们的配置文件与证书文件:

    cp /usr/local/nginx/conf/nginx.conf /home/nginx.conf
    cp /usr/local/nginx/conf/cert/cert.pem /home/cert.pem
    cp /usr/local/nginx/conf/cert/cert.key /home/cert.key

    依次执行下列命令:

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    make
    make install	#由于我们已经将文件进行了备份,所以直接进行安装即可

    安装完成后,再将我们的配置文件与证书文件移动到原位置:

    mkdir /usr/local/nginx/conf/cert
    cp /home/nginx.conf /usr/local/nginx/conf/nginx.conf
    cp /home/cert.pem /usr/local/nginx/conf/cert/cert.pem
    cp /home/cert.key /usr/local/nginx/conf/cert/cert.key

    修改完配置后,通过下面的命令查看配置是否修改正确:

    /usr/local/nginx/sbin/nginx -t

    如果配置文件没有问题,则启动Nginx,查看安全访问是否有效。如果安全访问不到,可能是您的域名信息没有备案,备案完成之后,安全访问即可用。

    5. 写在后面

    本博文讲述的是Nginx配置安全访问,按照博文进行操作可以实现相关配置,在配置过程中出现问题可以通过留言询问,博主可以提供快速回答。文章中有不足的地方希望大家批评。文章最后留一个Nginx的初始配置文件,初学者可能会用得到。Nginx初始配置文件 nginx.conf

    • 点赞 2
    • 收藏
    • 分享
    • 文章举报
    dp_shiyu 发布了4 篇原创文章 · 获赞 6 · 访问量 5858 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: