Nginx配置HTTPS和HTTP
来源:互联网 发布:java attach source 编辑:程序博客网 时间:2024/05/16 10:01
Nginx配置HTTPS
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)安全超文本传输协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即将HTTP用SSL/TLS协议进行封装,HTTPS的安全基础是SSL/TLS。
HTTP和HTTPS比较
1、HTTP明文协议的缺陷容易导致数据泄露、数据篡改、流量劫持、钓鱼攻击等安全问题。
2、网页篡改及劫持篡改网页推送广告。
3、HTTP协议无法验证通信方身份,可以伪造虚假服务器欺骗用户。
4、WIFI热点的普及和移动网络的加入,放大了数据被劫持、篡改的风险。
5、HTTPS普遍认为性能消耗要大于HTTP。但是我们可以通过性能优化、把证书部署在SLB或CDN,来解决此问题。
Nginx上部署HTTPS
1、首先我们需要购买证书(或者自己生成证书,但是自己生成的证书是不被其他浏览器和平台所信任的,生成证书参考)
2、如果服务器使用Nginx做均载或者域名代理,需要在nginx配置ssl。
一、Nginx配置ssl所有请求都走HTTPS配置
server { listen 443; #指定ssl监听端口 server_name *.andy.com; ssl on; #开启ssl支持 ssl_certificate /etc/nginx/server.pem; #指定服务器证书路径 ssl_certificate_key /etc/nginx/server.key; #指定私钥证书路径 ssl_session_cache shared:SSL:10m; #SSL会话缓存10MB ssl_session_timeout 10m; #SSL会话超时间10分钟 ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2; #指定SSL服务器端支持的协议版本 ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #指定加密算法 ssl_prefer_server_ciphers on; #在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法 #以下内容请按域名需要进行配置,此处仅供参考 location /test { proxy_pass http://192.168.1.111:8080/test; proxy_redirect off; proxy_set_header Host $host; proxy_set_header Remote_Addr $remote_addr; proxy_set_header X-REAL-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}
Nginx配置HTTP和HTTPS共存
在大多数情况下,我们有可能为了兼容之前APP或者项目发布的版本(之前都走HTTP请求),需要配置HTTP和HTTPS并存的情况,这时我们需要配置Nginx监听80端口和关闭SSL的强制开启。
nginx参考文档:SSL文档
server { listen 80; #监听80http请求 listen 443; #指定ssl监听端口 server_name *.andy.com; ssl_certificate /etc/nginx/server.pem; #指定服务器证书路径 ssl_certificate_key /etc/nginx/server.key; #指定私钥证书路径 ssl_session_cache shared:SSL:10m; #SSL会话缓存10MB ssl_session_timeout 10m; #SSL会话超时间10分钟 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL服务器端支持的协议版本 ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #指定加密算法 ssl_prefer_server_ciphers on; #在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法 #以下内容请按域名需要进行配置,此处仅供参考 location /test { proxy_pass http://192.168.1.111:8080/test; proxy_redirect off; proxy_set_header Host $host; proxy_set_header Remote_Addr $remote_addr; proxy_set_header X-REAL-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}
HTTPS的加速配置
如果我们项目中在Nginx上层配置了CDN或SLB等,那么SSL需要加到CDN上,CDN不仅提供图片、请求、静态文件等资源的缓存,而且还提供HTTPS安全加速,让HTTPS在请求性能方面和HTTP一样,自然安全性上更高。下面以阿里云CDN配置HTTPS为例。
首先开启HTTPS
配置HTTPS内容
一般选择跳转方式为HTTP和HTTPS共存。
- Nginx配置HTTPS和HTTP
- nginx配置http和https
- nginx配置http和https共存
- nginx+ssl配置http和https共存
- 配置NGINX同时运行 https 和 http
- nginx,配置http和https共存
- nginx配置ssl证书实现https和http共存访问
- nginx 同时配置https和http,不同域名
- Nginx配置域名同时支持 https 和 http 访问
- HTTP转HTTPS,Linux下配置Nginx
- nginx配置http自动转发https
- Nginx配置http强制跳转到https
- Nginx+php+http/https服务器配置
- nginx 配置https和wss
- nginx 配置https访问以及访问http跳转到https
- Nginx的安装与虚拟主机配置及HTTP和HTTPS共存配置
- Nginx同时反向代理http和https
- Nginx同时反向代理http和https
- 设计模式C++实现(5)——原型模式、模板方法模式
- 遍历HashMap的四种方法
- [LeetCode]Fraction to Recurring Decimal
- 如何解决 定位和float 造成的脱离文档流
- [FUNC]exchangeSort
- Nginx配置HTTPS和HTTP
- 要登录到这台远程计算机 必须被授予允许通过终端服务登录的权限
- (POJ 1703) Find them, Catch them【典型并查集:判断在不同的集合】
- ubuntu16.04主题美化和软件推荐
- 现场支援-问题解决记录
- 1. spark源码学习分享:reduceByKey
- android 录像 录制
- python魔法方法
- BZOJ 4137 [FJOI2015]火星商店问题