前言

有了自己的服务器、域名,DNS解析完成后,发现阿里云提供免费的ssl证书,为了提高博客在各大搜索引擎中的出现几率,所以为自己的博客配置了一下SSL。

在阿里云申请完SSL证书后,获得针对Nginx的证书文件。当然你也可以下载针对Tomcat的证书并只在Tomcat中配置SSL,并且只开启服务器的443端口提供HTTPS访问,但这时如果你只在浏览器里输入你的域名不带协议,默认跳转到80端口是无法访问到你的服务器的,当然也可以配置DNS解析来实现跳转,但既然有Nginx这么好的东西在,不用白不用。

准备工作

以pem和key结尾的支持Nginx的SSL配置文件

下载Nginx

nginx.org找最新的稳定nginx版本下载

[root] cd
[root] wget http://nginx.org/download/nginx-1.16.0.tar.gz
[root] tar zxvf nginx-1.16.0.tar.gz

安装依赖包

[root] yum -y install pcre-devel openssl-devel 

创建nginx的安装目录并安装nginx

[root] mkdir /opt/nginx
[root] cd nginx-1.16.0 #打开刚刚解压出来的nginx文件夹
[root] ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
# http_ssl_module添加ssl支持
[root] make && make install

配置nginx.conf文件

[root] cd /opt/nginx/conf
[root] vim nginx.conf
#在80端口处配置HTTP转发请求
server {
        listen       80;
        server_name  yourdomain.com; #修改成你的域名
        rewrite ^(.*)$ https://$host$1 permanent; #当收到HTTP请求时转发到HTTPS
...
#在443端口配置HTTPS
server {
        listen       443 ssl;
        server_name  yourdomain.com;
        ssl_certificate         /etc/ssl/yourdomain.pem;
        ssl_certificate_key     /etc/ssl/yourdomain.key;#这是你上传的证书文件位置

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on; #这4句是默认的

        location / {
            proxy_pass http://localhost:8090; #Tomcat运行的端口
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
        }
    }

上传证书文件

#如果root不能ssh登陆可以先上传到别的用户再用root复制到对应目录下
[any] scp yourdomain.pem yourdomain.key root@YourServerIP:/etc/ssl/

启动Nginx

[root] cd /opt/nginx/sbin
[root] ./nginx

在已经配置了DNS解析的情况下直接访问你的域名试试吧,现在会直接跳转到HTTPS协议了,记得要在服务器配置中打开443端口的入站规则哦,并且Tomcat的8090端口建议关闭。