第一章 nginx 支持https 配置样例

  • 说明:https 段配置参数说明
Server 段::
listen 443 http2 spdy; #侦听443端口,并按照http2.0、spdy、http1.1 的顺序进行适用协议匹配,向下兼容。
ssl on; #开启ssl
ssl_certificate ../ssl/58_com-key/server.pem; #指定证书位置(线下测试证书在ssl.tar包里,需要将tar包上传至linux服务器上解压,在子目录中选用一套证书及私钥使用,推荐使用58_com-key下的证书和私钥)
ssl_certificate_key ../ssl/58_com-key/server.key; #指定证书私钥位置
ssl_session_timeout 10m; # ssl session超时时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #ssl 链路支持协议
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; #ssl加密支持套件
ssl_prefer_server_ciphers on;#优先匹配服务端加密套件 location 段:
proxy_set_header HTTPS-Tag "HTTPS"; #设置HTTPS_TAG标识,方便程序认读
proxy_set_header X-Forwarded-Proto $scheme; #设置协议头传递变量 使用X-Forwarded-Proto进行协议的判定识别,需要在tomcat配置中添加内容:#使用X-Forwarded-Proto传递协议的条件是因为:在使用相对协议做跳转时,程序需要读取协议头再做跳转。而代理传递给后端的协议永远都是http协议,而真正的协议头https并没有传递成功。$scheme变量可以获取到用户访问使用的真正协议。将$scheme 变量赋值给 X-Forwarded_Proto 变量向后端(tomcat)传递协议可以避免这个问题。但是这时候tomcat使用X-Forwarded-For来获取用户IP可能存在问题。需要更换获取变量为X-Real-IP。
Tomcat-server.xml配置:
在Engine段添加: <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>

线上配置样例:

HTTP-80 段详细配置:

server {
listen 80;
server_name example.58.com;
access_log /opt/log/nginx/example.58.com/example.58.com_access.log main;
error_log /opt/log/nginx/example.58.com/example.58.com_error.log error;
charset utf-8; #### by dongange ####
set $remote_address $http_x_forwarded_for; if ( $remote_address !~ "[0-9]" ) {
set $remote_address $remote_addr;
}
#### ----------- #### location / {
proxy_pass http://example_pool;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_address;
proxy_set_header HTTPS-Tag "HTTP";
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 404 = http://404.58.com/404.html?from=$host$request_uri;
}

HTTPS-443 段详细配置配置:

server {
listen 443 http2 spdy;
server_name example.58.com;
access_log /opt/log/nginx/example.58.com/example.58.com_https_access.log main;
error_log /opt/log/nginx/example.58.com/example.58.com_https_error.log error;
charset utf-8; ssl on;
ssl_certificate ../ssl/58_com-key/server.pem;
ssl_certificate_key ../ssl/58_com-key/server.key;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on; #### by dongange ####
set $remote_address $http_x_forwarded_for; if ( $remote_address !~ "[0-9]" ) {
set $remote_address $remote_addr;
}
#### ----------- #### location / {
proxy_pass http://example_pool;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_address;
proxy_set_header HTTPS-Tag "HTTPS";
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 404 = https://404.58.com/404.html?from=$host$request_uri;
}

nginx https 配置样例的更多相关文章

  1. 第十三篇Django Logging配置样例

    第十三篇Django Logging配置样例 阅读目录(Content) Django 日志配置模板 官方链接 Django Logging Django 日志配置模板 LOGGING = { 've ...

  2. [转]3proxy 二级代理配置样例

    转自:http://www.cnblogs.com/airsong23/p/3893094.html 适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, ...

  3. 3proxy 二级代理配置样例

    适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, 而与我们相连的机器HOST-C也需要访问internet, 但是HOST-C却不能直接访问HOST- ...

  4. Nginx完整配置配置样例【官方版】

    我们主要参考nginx官方给出的完整配置的样例: https://www.nginx.com/resources/wiki/start/topics/examples/full/# 完整摘录如下: n ...

  5. nginx https配置后无法访问,可能防火墙在捣鬼

    同事发现nginx配置后https 无法访问,我帮忙解决的时候从以下出发点 1.防火墙未开放443端口 2.配置出错 1 2 3 于是就 netstat -anp 查看防火墙开的端口 发现已经在监听了 ...

  6. Nginx Https配置不带www跳转www

    把 morethink.cn和www.morethink.cn合并到一个server上去,使用301永久重定向. 然后将 https://morethink.cn 转到 https://www.mor ...

  7. Ubuntu Nginx https 配置

    #配置http跳转到https 80跳转443server { listen ; server_name www.***.com www.***.cn; https://$server_name$re ...

  8. ingress nginx https配置

    3.https配置第一步:制作自签证书 [root@master demo]# openssl genrsa -out tls.key 2048 [root@master demo]# openssl ...

  9. nginx配置样例

    简单的nginx配置如下,包含了静态文件配置.websocket.socket.io的配置: user nobody; worker_processes 3; #master_process off; ...

随机推荐

  1. vtiger7菜单管理

    添加了新模块,但是菜单上却没显示. 和菜单相关的表有4张 我们要把新建的message放到support模块下面 1.把默认的父级目录tools改成support 2. app2tab 0表示不显示, ...

  2. WebPack 学习:从阮神的15个DEMO开始

    WebPack 是什么 官方就一句话,打包所有的资源. 从阮神的 15 DEOM入手 Webpack Github 地址 阮神GIT 按照 ReadME 操作 npm webpack-dev-serv ...

  3. Java开发人员必须掌握的两个Linux魔法工具(四)

    子曰:"工欲善其事,必先利其器." 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣) ...

  4. go语言学习-数组-切片-map

    数组 go语言中数组的特点: 数组的长度是固定的,并且长度也是数组类型的一部分 是值类型,在赋值或者作为参数传递时,会复制整个数组,而不是指针 定义数组的语法: var arr1 = [5]int{1 ...

  5. R2 day2

    简单写一下吧 emmmm,来晚了1h,没赶上,所以没交.......(捂脸 T1 开始读错题了诶 开烤1.2h后 发现是个傻逼题.... 排序一下,维护前缀最左,右端点 随机数据我跑的比他们都慢... ...

  6. AGC 016C.+/- Rectangle(思路 构造)

    题目链接 首先想到同样例1的构造方式.即不得不填负的格子填\(-h*w\),其余填\(1\).直接这样能过二三十个点. 只这样不对.比如1 4 1 3,会输出无解(会填[1 1 -3 1]).怎么改呢 ...

  7. PHP函数 ------ ctype_alnum

    //判断是否是字母和数字或字母数字的组合 if(!ctype_alnum($str)){ echo '只能是字母或数字的组合';exit; }整理下ctype functions: 1.ctype_a ...

  8. extend与append的区别

    ''' list 的两个方法extend 和 append 看起来类似,但实际上完全不同. extend接受一个参数,这个参数,总是一个list,并把list中的每个元素添加到原list中 appen ...

  9. Redis淘汰删除策略

    Redis淘汰删除策略 Redis淘汰删除策略6种淘汰Key策略3种删除过期键策略定时删除惰性删除定期删除其他模块的淘汰处理RDB 快照持久化创建载入AOF 只追加持久化写入重写主从复模式下对过期键的 ...

  10. Java程序员面试中的多线程问题1

    转自:http://blog.jobbole.com/18571/ 很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework), 理解 ...