最详细的Nginx+Tomcat+Https配置教程(阿里云)

因为之前学校的项目使用的云服务器是微软云的,导致为其配置https时
不太方便,需要自己到处找免费证书,很麻烦,曾写过一篇Ubuntu 16.04——配置Nginx及Https服务,里面用的是certbot的免费证书。


本文使用的则是在阿里云申请的免费证书(Symantec),以下是证书的配置过程。

前提

购买一个域名并将其绑定至服务器上(做域名解析),在阿里云管理控制台的域名页面中选择进入域名解析列表,并在解析设置中的新手引导,按照提示输入服务器IP地址即可。
最详细的Nginx+Tomcat+Https配置教程(阿里云)
最详细的Nginx+Tomcat+Https配置教程(阿里云)
虽然图中说“添加成功后可以www.xxx.xx或xxx.xx(设域名为xxx.xx)方式访问网站,但实际上是要先对网站进行备案的,否则就会出现这个页面:
最详细的Nginx+Tomcat+Https配置教程(阿里云)

当初我可是看了N多教程都没明白究竟怎样才能直接通过域名访问网站,因为各种教程不是缺这就是缺那,走了一些弯路,最后才搞明白实际上流程如下:

Created with Raphaël 2.2.0申请域名域名解析(绑定服务器)直接通过域名访问服务器页面?域名备案正常访问服务器页面域名前加https访问yesno

购买证书

进入云盾证书购买页面,在选择品牌处选择Symantec证书类型选择增强型OV SSL后会出现免费型DV SSL(期限一年)
最详细的Nginx+Tomcat+Https配置教程(阿里云)
最详细的Nginx+Tomcat+Https配置教程(阿里云)

申请证书

购买完成,进入证书控制台,点击申请,填写相关信息(注意填写的域名最好与新手引导中的域名相同),点击下一步验证DNS信息后就可提交审核,等待5-10分钟。
最详细的Nginx+Tomcat+Https配置教程(阿里云)

下载证书

审核通过后,点击下载就可以准备放到服务器上了,接下来主要是针对Nginx的配置过程。
最详细的Nginx+Tomcat+Https配置教程(阿里云)

将下载的证书上传至服务器的nginx目录中(可新建一个/etc/nginx/cert目录以存放证书)

在Nginx上配置证书

最初参考的是阿里云官网上的Nginx/Tengine服务器安装SSL证书,但其中内容和实际情况有些出入,故补上详细内容。
很多教程里说在nginx/nginx.conf中找到被注释的关于ssl的内容并稍加修改即可成功,然鹅事实并非如此最详细的Nginx+Tomcat+Https配置教程(阿里云)
实际上应该在/etc/nginx/sites-available/default中配置。
1.若只配置https,在default文件中找到或加上如下内容即可:

        server_name 自己的域名 www.自己的域名;
        listen [::]:443 ssl ipv6only=on;
        listen 443 ssl;
        ssl on;
        #root html;目前使用中看来这句没啥用
        #index index.html index.htm;同上
        ssl_certificate   cert/自己的证书.pem;
        ssl_certificate_key  cert/自己的证书.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;

2.如果还要通过Nginx代理Tomcat,则加入以下内容即可:

        listen 80 default_server;
        listen [::]:80 default_server;

        location / {
        proxy_pass http://localhost:8080;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        }

        #针对图片访问的据说不加会受影响(首先路径得对),虽然我还没遇到过
        location /images/{
                root /var/www/;
                autoindex off;
        }

        location ~ .*.[jsp|do|action]$ { #所有jsp页面以及do/action请求均交由tomcat处理
            index index.jsp;
            proxy_pass http://localhost:8080; #转向tomcat处理
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #设定访问静态文件直接读取不经过tomcat
            expires      30d;
            proxy_pass http://localhost:8080; #转向tomcat处理
        }
        location ~ .*\.(js|css)?$ {
            expires      1h;
        }

3.Tomcat中需要修改一下/tomcat/conf/server.xml中的内容
最详细的Nginx+Tomcat+Https配置教程(阿里云)
最详细的Nginx+Tomcat+Https配置教程(阿里云)
4.最后不要忘记测试一下Nginx的配置是否正确,无误后重启即可。

sudo nginx -t
sudo systemctl restart nginx

测试结果

最详细的Nginx+Tomcat+Https配置教程(阿里云)
最详细的Nginx+Tomcat+Https配置教程(阿里云)
经过反复尝试,最后得出这种办法,希望内容足够详细并能帮助到一些迷路儿童!!!