- nginx安装默认不带SSL模块,使用https需要自己添加此模块。
- 使用nginx的rewrite功能,可以将http重写至https,从而使用SSL加密,加强了网页的安全性;https再代理到提供服务的真实ip与端口,实现隐藏真实地址的功能,思维流程见下图。
一、nginx安装ssl模块
- 下载openssl并解压
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar zxvf openssl-1.0.1t.tar.gz
- 配置NGINX模块
cd [your nginx source folder]
./configure --with-http_ssl_module --with-openssl=/home/openssl-1.0.1t
- 编译
make -j2
make install
二、配置server模块,实现http重写到https
首先说一下zhengxh.work是用于示例的web服务的域名。
server {
listen 80; //监听80端口,http的默认端口就是80
server_name zhengxh.work; //配置需要重写的域名
location / {
rewrite ^(.*) https://$server_name$1 permanent; //把所有访问http的请求重写至https。
}
}
三、https代理提供服务的真实ip与端口
# HTTPS server
server {
listen 443 ssl; //监听443端口,https的默认端口就是443
ssl_certificate cert/zhengxh.work_bundle.pem; //添加ssl的PEM文件,申请ssl证书后可以下载此文件
ssl_certificate_key cert/zhengxh.work.key; //添加ssl的KEY文件,申请ssl证书后可以下载此文件
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://10.0.4.11:8090; //使用proxy_pass代理提供服务的真实ip与端口,实现隐藏功能
}
}
总结
上述配置思路非常适合WEB服务想要使用SSL加密,并隐藏真实地址的场景。