阿里云ecs配置nginx+域名+ssl证书的全过程

一、远程下载nginx并安装:

  • 进入你需要下载并存放nginx安装包的目录并用远程命令下载:
wget https://nginx.org/download/nginx-1.5.9.tar.gz
  • 下载完成后,执行解压命令解压
tar -zxvf nginx-1.5.9.tar.gz
  • 进入解压后的nginx-1.5.9文件夹,执行以下三个命令进行安装:
  • 1、配置./configure
# 不建议
./configure

注意该命令是对nginx进行配置的命令 后面可以带响应的安装目录配置还可以带ssl的配置,后续可以用到,博主一开始没注意导致两次不必要的配置;

# 建议
./configure --prefix=/usr/local/nginx --with-http_stub_status_modul

执行到这一步博主还遇到一个问题就是报错如下:
阿里云ecs配置nginx+域名+ssl证书的全过程_第1张图片
错误为:./configure: error: the HTTP rewrite module requires the PCRE library
安装pcre-devel解决问题

yum -y install pcre-devel

还有可能出现:

错误提示:

./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library.   You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl= options.

解决办法:

yum -y install openssl openssl-devel
  • 2、编译(编译的过程是把各种语言写的源码文件,变成可执行文件和各种库文件)
make
  • 3、安装(make install是把这些编译出来的可执行文件和库文件复制到合适的地方)
make install

二、nginx配置域名:

  • 阿里云购买域名并备案成功之后,去阿里云域名管理控制台进行DNS云解析配置,加一下域名对阿里云ecs的解析

阿里云ecs配置nginx+域名+ssl证书的全过程_第2张图片
记录值对应ecs的ip地址;然后这样子域名就能解析到自己的服务器ip了;

  • 接下来在ecs管理控制台开启对默认端口80端口的监听,增加一条规则如下:
    在这里插入图片描述
    配置到这里其实已经可以通过域名对后端服务进行请求了,但是博主此前没有用nginx所以只能监听80端口,如果服务启动用了其他端口将无法监听,所以博主配置了一个nginx进行请求转发,而且nginx可以做后续的ssl的配置更简单;
  • 一开始博主只配置了http的访问请求,没有进行https的配置,具体配置如下:
upstream aiyunyou{
 server 127.0.0.1:8089;
}
server{
 listen 80;
 server_name  www.***.com;
 
 
location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header X-Nginx-Proxy true;
 
 
  proxy_pass http://aiyunyou;
  proxy_redirect off;
 }

配置完成后进行 ./nginx -s reload 重启
此时的配置是将域名监听80端口,然后对本机ip的8089端口进行转发了,配置到这里就可以直接用www.***.com进行访问了,不需要域名+端口号了;

三、nginx配置ssl证书,开启https访问

  • 在配置完域名访问之后,此时只能通过http进行域名访问,所以博主就申请了阿里云一年免费ssl证书,准备配置https安全访问;
  • 在阿里云ssl控制平台下载nginx办本的ssl证书
    阿里云ecs配置nginx+域名+ssl证书的全过程_第3张图片
  • 将证书pem文件和key文件上传到阿里云ecs上
    新建一个cert文件夹:
cd /usr/local/nginx/conf
mkdir cert
cd cert
rz

在这里插入图片描述

  • 配置nginx解析ssl证书:
# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
	listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
	server_name localhost;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
	root html;
	index index.html index.htm;
	ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
	ssl_certificate_key cert/domain name.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;   
	}
}       

重启nginx配置 ./nginx -s reload
配置到这里博主用https访问是失败了,后来发现是ecs忘记开放443端口了,ecs配置一条443端口的开放规则;
在这里插入图片描述

  • 配置完443端口之后博主成功通过https访问了服务,但是此时发现http无法访问成功,所以这里有两个方案,第一 即同意http有同意https访问,第二 统一转发到https访问,博主这里采用了第二种方案;
    完整配置如下:
upstream aiyunyou{
      server 127.0.0.1:8089;
    }
server {
   listen       80;
   server_name  www.****.com;
   rewrite ^(.*) https://$server_name$1 permanent; 
   }
 server {
        listen       443 ssl;
        server_name  www.***.com;

        ssl_certificate ./cert/***.pem;
        ssl_certificate_key ./cert/**.key;

        ssl_session_cache shared:SSL:1m;
        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;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Nginx-Proxy true;

            proxy_pass http://aiyunyou;
            proxy_redirect off;
        }
    }   

至此,ecs的域名http和https全部配置完成,访问之后成功跳转并成功访问;
阿里云ecs配置nginx+域名+ssl证书的全过程_第4张图片

你可能感兴趣的:(运维)