在nginx中使用http2(1)
相关文章:
-
- VirtualBox+UbuntuにLEMP環境構築
- nginScriptを試す(1):nginxをソースコンパイル
实际上,我对HTTP/2并不是很了解。
嗨嗨嗨,三三三●ⅱⅲ,滚来滚去~
暫時不談論NginScript,我打算將來支援可能成為主流的HTTP2。
自从SPDY时代开始了解概要,但作为提供方或使用方,都没有机会接触过,所以对其优缺点并不了解。
只是,暂且也许会有一些好处,所以我觉得还是先试一下确认。
嗨~三三三● ⅱⅲ滚滚♪
请用中文将以下内容改写成句子,只需要提供一种版本:
——————- ↓ 题目开始 ↓——————-
将nginx配置为支持HTTP/2
请按照往常一样从安装开始,并随意跳过阅读。
安装Nginx
准备
sudo apt-get install build-essential # ビルド全般ツール
sudo apt-get install zlib1g-dev # zlibライブラリ(nginxのビルドで必要)
sudo apt-get install libssl-dev # SSLライブラリ(nginxのビルドで必要)
sudo apt-get install libpcre3-dev # PCREライブラリ(nginxのビルドで必要)
简化形式
sudo apt-get install build-essential zlib1g-dev libssl-dev libpcre3-dev
构建
在nginx的1.9.5版本中,宣布支持HTTP/2。
然而,默认情况下不会安装,需要在构建选项中进行附加。
wget http://nginx.org/download/nginx-1.9.5.tar.gz
tar xvfz nginx-1.9.5.tar.gz
cd nginx-1.9.5
./configure --pid-path=/run/nginx.pid --user=www-data --group=www-data --with-http_ssl_module --with-http_v2_module
make
sudo make install
cd ..
确认启动
sudo /usr/local/nginx/sbin/nginx # 起動
sudo /usr/local/nginx/sbin/nginx -s quit # 終了
SSL 的设置
由于HTTP/2需要SSL,因此需要安装证书。
生成证书
openssl req -new -nodes -keyout cert.key -out cert.csr -subj "/C=JP/ST=/L=/O=/CN=www.ext.com"
openssl x509 -in cert.csr -out cert.pem -req -signkey cert.key -days 3650
sudo mv cert.* /usr/local/nginx/conf/
调整配置文件
取消SSL部分的注释。
# HTTPS server
#
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5; # ←ちょっと変えてます
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
将设置应用
sudo /usr/local/nginx/sbin/nginx -t # 設定変更確認
sudo /usr/local/nginx/sbin/nginx -s quit # 終了
sudo /usr/local/nginx/sbin/nginx # 起動
启用HTTP/2
由于系统成功启动,现在可以调整配置以启用HTTP/2。
# HTTPS server
#
server {
listen 443 ssl http2;
・・・
}
将设置应用
sudo /usr/local/nginx/sbin/nginx -t # 設定変更確認
sudo /usr/local/nginx/sbin/nginx -s quit # 終了
sudo /usr/local/nginx/sbin/nginx # 起動
确认HTTP2
通过访问日志进行确认
当使用Chrome和IE访问相同的URL时,可以发现所记录的HTTP协议不同。
192.168.56.1 - - [01/Oct/2015:12:42:53 +0900] "GET /index.html HTTP/1.1" ← IE
192.168.56.1 - - [01/Oct/2015:12:40:53 +0900] "GET /index.html HTTP/2.0" ← Chrome
生动日志
# IEからのアクセス
192.168.56.1 - - [01/Oct/2015:12:42:53 +0900] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
# Chromeからのアクセス
192.168.56.1 - - [01/Oct/2015:12:40:53 +0900] "GET /index.html HTTP/2.0" 200 755 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 Kinza/2.6.0"
使用 Chrome 浏览器的插件进行确认。
用Chrome的扩展程序HTTP/2和SPDY指示器来确认兼容性。
如果右上角的闪电符号变色,表示支持。
(⊙ω⊙)你好~ 三三三● ⅱⅲ 咕噜咕噜♪
请你用中文重新表述以下内容,只需要一个选项:
——————- ↓内容补充在此↓ ——————-
自動開啟
在系统启动时,将Nginx也注册到systemd中并启动。
参考:https://www.nginx.com/resources/wiki/start/topics/examples/systemd/
服务文件的注册
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
自动启动被启用。
$ sudo systemctl daemon-reload # serviceファイル再読み込み
$ sudo systemctl enable nginx # 自動起動登録
服務指令
$ sudo service nginx start # サービス手動起動
$ sudo service nginx stop # サービス手動停止
$ sudo service nginx restart # サービス再起動