Nginx环境下搭建HTTPS

2018-01-15  本文已影响0人  海里的沙丁鱼

本服务器使用的环境是nginx,系统是Ubuntu,使用的阿里云的服务器,所以在阿里云中下载证书。 当然你还可以去CA认证服务机构官网或七牛云存储中下载证书

什么,你的服务器是LAMP环境怎样配置HTTPS,请转战到博主的另一篇博文吧,地址是Apache环境下搭建HTTPS环境

一:在阿里云官网下载CA证书

刘滔 DV SSL

如图,选择“立即购买”

立即购买
第二步:配置服务器
  root@laravel:~# scp /.../ssl.zip  root@120.**.***.***:/etcinx/ssl/yourdomain.com.ssl/
  root@laravel:~# cd /etcinx/sites-available
server {
    listen 443;
    server_name www.yourdomain.com;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   /etcinx/ssl/yourdomain.com.ssl/21******.pem;
    ssl_certificate_key  /etcinx/ssl/yourdomain.com.ssl/21******.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;
    }
}

保存并修改,这里开启了ssl;并且在这里配置域名,将server_name配置为www.yourdomain.comssl_certificate配置证书.pem文件的绝对路径,ssl_certificate_key配置证书“.key”的绝对路径。重启nginx服务,就可以带上https的域名访问了。

  root@laravel:~# nginx -s reload
第三步:nginx反向代理

因为博主将博客项目放置在服务器的某个端口下(这里假设是0055端口),所以就需要将0055端口反向代理到443端口,通过https域名访问我的博客。那么如何实现反向代理呢,将上一步监听443端口代码修改如下:

server {
    listen 443;
    server_name www.yourdomain.com;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   /etcinx/ssl/yourdomain.com.ssl/21******.pem;
    ssl_certificate_key  /etcinx/ssl/yourdomain.com.ssl/21******.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 / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass http://127.0.0.1:0055;
    }
}
第三步:nginx重定向

当你想要随意输入域名都能跳转到https下,那么就需要对域名进行重定向配置,这里,我们将80端口和443端口进行重定向,代码如下:

server {
    listen 80;
    server_name www.yourdomain.com yourdomain.com;

    rewrite ^(.*) https://www.yourdomain.com$1 permanent;
}
server {
    listen  443;
    server_name www.yourdomain.com yourdomain.com;

    rewrite ^(.*) https://www.yourdomain.com$1 permanent;
}

那么,为什么需要特别地对80和443端口重定向呢?HTTPS实际上就是SSL over HTTP,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。
当我们在浏览器输入www.yourdomain.comyourdomain.com时,nginx会将此域名重定向到https下,通过https访问到443端口。又因为443端口反向代理了0055端口。因此最后属于此域名的任何形式都能访问到0055端口下对应的项目。所以博主通过本篇博文的操作,就可以在浏览器地址栏里输入特定域名的任何形式访问到我的博客项目了,并且还是加密过得网站。

原文出处

上一篇 下一篇

猜你喜欢

热点阅读