Https服务器配置-基于Nginx
程序员文章站
2022-04-30 23:38:19
...
上篇 我们讨论了用阿里免费证书在SpringBoot项目中配置Https服务,实际网站部署中,我们往往有一个前置的Nginx反向代理服务器,因为后端服务可能也不是SpringBoot项目,比如nodejs等。配置在Nginx可以屏蔽后端的具体服务,客户端和Nginx之间通过TSL安全协议通信,Nginx在和后端服务通过一个http代理通信。
这样的好处有两个:第一是不用考虑后端服务的差异化配置,不管是java还是node还是别的开发的服务,Nginx代理的配置是不用变化的。第二是在 更改配置方便,证书管理和服务分离。
第一步 :申请下载证书
不清楚的可以参考上篇文章。将下载的Nginx版本证书和私钥拷贝到服务器对应目录:
/usr/local/nginx/conf/2974915_iotserver.vip.pem;
/usr/local/nginx/conf/2974915_iotserver.vip.key;
第二步:配置Nginx
Nginx需要编译ssl支持的模块,有关Nginx中模块和升级部署的,可以参考我另一篇文章。
具体配置如下:
nginx.conf文件配置
server {
listen 443 ssl; # managed by Certbot
server_name iotserver.vip;
keepalive_timeout 70;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /usr/local/nginx/conf/2974915_iotserver.vip.pem;
ssl_certificate_key /usr/local/nginx/conf/2974915_iotserver.vip.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
alias /home/zx/soft/dist/;
index index.html index.htm;
}
#api/v1后缀的,会代理到本机的java接口服务端口
location ^~ /api/v1/ {
proxy_pass http://127.0.0.1:8089;
}
}
server {
listen 80 ;
server_name www.iotserver.vip;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 80;
server_name iotserver.vip;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
# another virtual host using mix of IP-, name-, and port-based configuration
server {
listen 80 default_server;
return 500;
#location /api/v1/file/upload {
# default_type text/html;
# return 200 "success11";
#}
}
配置解释说明:
首先配置了一个server监听443端口,静态资源会路由到/home/zx/soft/dist/目录,api/v1/后缀的会代理到本机的java接口服务端口。另外配置了两个server用于重定向到https,这样当用户输入的是http是,自动转为https访问。最后一个是,针对其他异常路径80访问直接返回错误信息。这样做就保证了安全同时,增加了用户体验。
Nginx配置参数说明:
在Nginx1.15之前需要 配置ssl on,之后的版本,只需要在listen之后加ssl即可开启SSL支持。
有关ssl的配置,实际上nginx官网也给出了示例:可以直接复制使用,更多参数配置,可以根据需求查看文档。
第三步:用域名访问
这个和之前一样,验证即可。