美文网首页程序员
Aliyun ECS配置Nginx + HTTPS服务

Aliyun ECS配置Nginx + HTTPS服务

作者: CoderShangfeng | 来源:发表于2018-06-13 22:56 被阅读37次

    阿里云官方给了个教程,但是按步骤一步步做下来,冒出来的“坑”比较多,折腾了2个小时把坑填上,记录一下用作备忘。阿里云官方给出的教程:CentOS 7.4 实例配置 Nginx + HTTPS 服务

    0. 预备知识

    • 假设读者已经对ECS的安全组添加了443端口可访问。

    • 安装时,可能需要以ECS实例的root用户登录或者sudo。可以使用su命令进行用户切换。

    1. 预安装

    按照一般流程,首先需要安装PCRE和zlib的第三方库。

    PCRE是一系列实现了正则表达式模式匹配的函数集,参照了Perl的语法和语义。

    zlib是一种无损数据压缩格式,zlib-devel是一个开源库,包含一些头文件和实现(我猜可能是C写的吧,没有仔细查),可用于开发一些使用zlib格式的程序。

    
    yum -y **install** pcre pcre-devel
    
    yum -y **install** zlib-devel
    
    

    2. 切换目录

    可根据自己需要切换到合适的目录下,通常建议在非admin的普通用户目录下。

    
    cd /usr/local/
    
    

    该目录将作为我们下载nginx及OpenSSL源码压缩包并解压的根目录。

    3. 下载OpenSSL及Nginx源码压缩包

    OpenSSL用于生成服务器端的密钥证书。

    
    wget [https://www.openssl.org/source/openssl-1.1.0g.tar.gz](https://www.openssl.org/source/openssl-1.1.0g.tar.gz)
    
    tar -xvzf openssl-1.1.0g.tar.gz
    
    

    Nginx源码压缩包下载。注:阿里云官网教程给出的Nginx版本在编译时出现某条deprecated日志,初步判断是版本问题,于是重新在Nginx官网上随便找了一个看样子later and more stable的版本。-_-!

    
    wget [http://nginx.org/download/nginx-1.13.9.tar.gz](http://nginx.org/download/nginx-1.13.9.tar.gz)
    
    tar -xvf nginx-1.13.9.tar.gz 
    
    

    4. 编译

    
    cd nginx-1.13.9 # 注意:这里是切换到Nginx解压后的文件目录下
    
    # 调用目录下configure脚本命令
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0g 
    
    make && make install
    
    

    注:—prefix=/usr/local/nginx参数值将在make成功后生成为Nginx程序的文件目录。

    本例中,命令编译成功后,将会在/usr/local/下新增nginx文件夹,nginx程序即在该目录下。

    5. 生成证书和密钥

    
    cd /usr/local/nginx/conf #配置文件目录
    
    openssl req -new -x509 -nodes -out server.crt -keyout server.key #按下回车后,按照提示输入信息,生成server.crt和server.key文件,将用于配置nginx监听443端口
    
    

    官方教程中的一个问题就是证书和密钥的路径存放位置。应该与后面将要介绍的nginx.conf配置文件同一目录下。

    6. 更改Nginx的SSL配置

    打开nginx配置文件nginx.conf

    
    vi /usr/local/nginx/conf/nginx.conf
    
    

    取消server条目下的注释,并更新证书和密钥文件名(参照step 5生成的文件名,当然,你也可以按照配置文件中默认文件名重复step 5,这会儿说是不是有点晚?😄),如下图所示。

    取消原nginx.conf文件中443端口监听注释,并更改ssl证书及key文件名

    注:当然,你也可以顺手把配置文件里代理80端口的那部分代码注释掉,不过只要ECS安全组没有打开80端口访问权限,用户也是无法从80端口访问到Nginx及后面的服务的。

    7. 启动Nginx

    
    /usr/local/nginx/sbin/nginx
    
    

    注:虽然这样启动有点丑,但平时毕竟用的比较少,所以就将就着这么用吧。

    8. 检查网络端口监听

    
    netstat -ntpl
    
    

    显示结果如下:


    Nginx监听443端口(截图时尚未在配置文件中注释掉监听80端口)

    9. 通过HTTPS访问ECS的公网IP

    掏出你的ECS公网IP,加上https://前缀。如果顺利的话,应该能看到下图所示。

    访问Nginx代理HTTPS请求的默认页面
    注:暂时不用关心浏览器提示的unsecure link提示。

    10. 重新加载nginx配置

    在重新加载新的Nginx配置前,建议不要直接restart,有必要先判断下更改后的配置是否能够运行正常:

    
    cd usr/local/nginx/sbin/
    
    ./nginx -t -c /usr/loal/nginx/conf/nginx.conf
    
    

    如果正常,将返回:


    image.png

    确认无误后,重新加载:

    
    /usr/nginx/sbin/nginx -s reload
    
    

    不到之处,欢迎指正。

    EOF

    相关文章

      网友评论

        本文标题:Aliyun ECS配置Nginx + HTTPS服务

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