centos7通过nginx搭建SSL

今天给大家带来的是一篇关于通过nginx搭建HTTPS访问转跳后端HTTP的教程,部署方式如下:

centos7通过nginx搭建SSL_第1张图片

  • 安装基础组件
yum -y isntall firewalld
yum -y install gcc gcc-c++
yum -y install pcre-devel
yum -y install zlib-devel
yum -y install openssl openssl-devel
  • 下载源码与编译

下载与代码(假设当前在 ~/ 目录下)

wget https://nginx.org/download/nginx-1.12.2.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2n.tar.gz

解压

cd /opt
tar zxf nginx-1.12.2.tar.gz
tar zxf openssl-1.0.2n.tar.gz

编译前配置,让nginx支持ssl_module与openssl

cd nginx-1.12.2
./configure --with-http_ssl_module --with-openssl=/opt/openssl-1.0.2n

编译

make
make install

安装完成后的nginx路径是: /usr/local/nginx

  • 配置环境

到腾讯云申请证书(自创建证书参看网上其他资料)
centos7通过nginx搭建SSL_第2张图片

把nginx目录下的2个文件复制到 /usr/local/nginx/conf 目录下

配置nginx

vim /usr/local/nginx/conf/nginx.conf

在nginx.conf中增加HTTP/HTTPS配置

    upstream tomcat {
        server 127.0.0.1:9081 fail_timeout=0; #后端服务地址
    }
    server {
        listen                  443;
        ssl                     on;
        server_name             host.httpsDomain.com; #申请证书的域名

        ssl_certificate         1_host.httpsDomain.com_bundle.crt; #证书压缩包中nginx文件夹下crt文件,相对路径是在 [/usr/local/nginx/conf]
        ssl_certificate_key     2_host.httpsDomain.com.key; #证书压缩包中nginx文件夹下crt文件,相对路径是在 [/usr/local/nginx/conf]
        ssl_session_timeout  5m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;     #指定SSL服务器端支持的协议版本
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;    #指定加密算法
        ssl_prefer_server_ciphers   on;    #在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法

        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-Proto https;
                proxy_redirect off;
                proxy_connect_timeout      240;
                proxy_send_timeout         240;
                proxy_read_timeout         240;
                # note, there is not SSL here! plain HTTP is used
                proxy_pass http://tomcat;
        }
    }
    server {
        listen                  80;
        server_name             host.httpsDomain.com;  #http访问入口
        location / {
            rewrite ^ https://$http_host$request_uri? permanent; #强制跳转到HTTPS上
        }
    }

保存退出

:wq

启动nginx

#启动
/usr/local/nginx/sbin/nginx

#重启
/usr/local/nginx/sbin/nginx -s reload

#关闭
/usr/local/nginx/sbin/nginx -s stop

配置防火墙

把firewalld注册成服务并启动

systemctl enable firewalld
systemctl start firewalld

允许TCP协议下的 80,443 端口 暴露到互联网

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
  • 运行测试

检查防火墙端口

firewall-cmd --list-ports
#看看输出有没有80/tcp与443/tcp

PS:如果用的是用阿里云/腾讯云,则还需要到XX云控制台检查安全策略组是否开放了TCP下的80与443

检查nginx服务

ss -ntlp | grep nginx
#确认一下 80/tcp  跟 443/tcp 是否被nginx所使用

浏览器测试

centos7通过nginx搭建SSL_第3张图片

如果大家有什么问题或建议,欢迎留言 ^_^

你可能感兴趣的:(devOps)