设为首页 收藏本站
查看: 739|回复: 0

[经验分享] Ubuntu 16.04 安装配置支持http2的nginx

[复制链接]

尚未签到

发表于 2017-12-23 20:28:07 | 显示全部楼层 |阅读模式
第一步 安装最新版本的nginx
  对于ubuntu16.04而言 直接装就是最新的
  
```
  
sudo apt-get update
  
sudo apt-get install nginx
  

  

  
查看Nginx版本
  

  

  

  sudo nginx -v
  

  
16.04默认应该是
  

  
nginx version: nginx/1.10.0 (Ubuntu)
  
```
第二部 修改服务器配置
  配置文件/etc/nginx/sites-available/default
  

  
server_name example.com;
  

  保存修改后的文件
  
使用命令nginx -t检查配置文件语法是否正确
  如果正确 会输出
  

  

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok  
nginx: configuration file /etc/nginx/nginx.conf test is successful
  

  

  

  不正确的话根据提示 找原因
4添加ssl证书
  创建ssl证书存放的目录
  

  
sudo mkdir /etc/nginx/ssl
  

  拷贝站点的证书到指定目录
  

  
sudo cp /path/to/your/certificate.crt /etc/nginx/ssl/example.com.crt
  
sudo cp /path/to/your/private.key /etc/nginx/ssl/example.com.key
  

  现在让我们打开站点配置文件 并添加ssl证书配置
  

  

sudo vim /etc/nginx/sites-available/default  

  

  

  在server节点中新起一行 配置证书路径
  

  

ssl_certificate /etc/nginx/ssl/example.com.crt;  
ssl_certificate_key /etc/nginx/ssl/example.com.key;
  

  

  

5 配置安全选项
  HTTP / 2有一个巨大的黑名单的旧的和不安全的密码,所以我们要避开他们。密码套件是一堆的加密算法,它描述了如何传输数据应该被加密。
  
我们将使用一个非常受欢迎的密码设置,其安全性是由互联网巨头像CloudFlare的批准。不允许使用MD5加密的(这被称为不安全的1996起,但尽管如此,它的使用非常广泛,甚至到今天)
  打开配置文件
  sudo vim /etc/nginx/nginx.conf
  添加下面配置到ssl_prefer_server_ciphers on;后面
  

  

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;  

  

  

  检查nginx语法
  

  
sudo nginx -t
  

6增加密钥交换的安全性
  建立一个安全连接的第一步是服务器和客户端之间的私有密钥的交换。问题是,到这一点上,他们之间的连接是不加密的,这意味着数据传输是可见的任何第三方。这就是为什么我们需要性–Hellman–Merkle算法。关于它是如何工作的技术细节是不能一言以蔽之解释一个复杂的问题,但如果你真的有兴趣的细节,你可以看这个视频。
  默认情况下,nginx使用一个1028位的他(Ephemeral Diffie Hellman)的关键,这是比较容易解密。提供最大的安全性,我们要建立我们自己的、更安全的DHE的关键。
  
要做到这一问题,发出以下命令:
  

  

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048  

  

  

  记住,我们要生成DH参数在同一文件夹中我们的SSL证书。在本教程中,证书在/ etc / Nginx / SSL /。这是因为nginx看起来总是为用户提供密钥证书的文件夹和远程使用它如果存在。

  文件路径后的变量(在我们的情况下,它是2048)指定的键的长度。以一个2048位的长度是足够安全和Mozilla基金会的推荐,但如果你正在寻找更加密,你可以改变它4096。
  
生成过程将需要约5分钟
  一旦完成,再次打开默认的nginx配置文件:
  

  

sudo vim /etc/nginx/sites-available/default  

  

  

  添加新的配置在 server块中
  

  
ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
  

7重定向httpp请求到https
  在配置文件/etc/nginx/sites-available/default中加入新server节点
  

  

server {  listen         80;
  listen    [::]:80;
  server_name    example.com;
  return         301 https://$server_name$request_uri;
  
}
  

  

  

  保存后检查语法是否正确
  

  

sudo nginx -t  

  

  

8重启nginx
  要想使之前的配置全部生效 需要重启nginx
  
首先站点配置文件看起来像是这样
  

  

server {  listen 443 ssl http2 default_server;
  listen [::]:443 ssl http2 default_server;
  

  root /var/www/html;
  

  index index.html index.htm index.nginx-debian.html;
  

  server_name example.com;
  

  location / {
  try_files $uri $uri/ =404;
  }
  

  ssl_certificate /etc/nginx/ssl/example.com.crt;
  ssl_certificate_key /etc/nginx/ssl/example.com.key;
  ssl_dhparam /etc/nginx/ssl/dhparam.pem;
  
}
  

  

  
server {
  listen         80;
  listen    [::]:80;
  server_name    example.com;
  return         301 https://$server_name$request_uri;
  
}
  

  

  

  重启Nginx
  

  
sudo systemctl restart nginx
  
或者
  
sudo service nginx restart
  

9验证配置
  让我们检查我们的服务器是否正在运行。打开Web浏览器并导航到您的域(与你的实际域名example.com替换):
  

  

example.com  

  

  

  打开chrome设置
  
(View -> Developer -> Developer Tools)
  
刷新当前页面
  切换到Networktab 点击表格头 启用Protocol选项
  现在你应该可以看到h2which stands for HTTP/2)
10配置nginx性能
  在这一步,我们将调整为最佳性能和安全性的主要nginx配置文件
  打开配置文件nginx.conf
  

  

sudo vim /etc/nginx/nginx.conf  

  

  

启用连接凭据缓存
  相比于HTTP,HTTPS需要相对长的时间来建立服务器和用户之间的初始连接。为了尽量减少页面加载速度中的这种差异,我们将启用连接凭据的缓存。这意味着,而不是创建一个新的会话在每一个页面上的请求,服务器将使用缓存版本的凭据,而不是。
  启用会话缓存 ,添加如下的行到配置文件的http块中
  

  

ssl_session_cache shared:SSL:5m;  ssl_session_t
  imeout 1h;
  

  

  

  ssl_session_cache指定缓存将包含会话信息的大小。1字节的它可以存储约4000个会话的信息。对于大多数用户来说,5个宏的默认值将是足够的,但如果你期望的流量真的很重,你可以相应地增加这个值。
  ssl_session_timeout限制特定会话缓存中存储的时间。这个值不应该太大(超过一个小时),但设置值太低是没有意义的。
  ## 启用HTTP严格传输安全(HSTS)
  尽管我们已经做了所有常规的HTTP请求重定向到HTTPS在nginx的配置文件中,我们还应该启用HTTP严格传输安全避免首先要做那些重定向
  如果浏览器找到HSTS报头,它不会试图通过普通的HTTP再次为给定的时间内连接到服务器。不管是什么,它将只使用加密的HTTPS连接交换数据。这个标题也应该保护我们的协议降级攻击。
  将下面的配置添加到nginx.conf的http节点中
  

  

add_header Strict-Transport-Security "max-age=15768000" always;  

  

  

  max-age单位使秒。15768000秒相当于6个月。
  默认情况下,此头不添加到域的请求。如果你想申请的子域,HSTS的所有的人,你应该在行尾添加includeSubDomains变量,像这样:
  

  

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains: always;";  

  

  

  保存 检查配置
  nginx -t
  重启
  servier nginx restart

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427309-1-1.html 上篇帖子: 讲的好,php后端模式,php-fpm以及php-cgi, fast-cgi,以及与nginx的关系 下篇帖子: 解决windows下nginx中文文件名乱码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表