Nginx:Debian/Ubuntu Linux上的SPDY SSL安装和配置

时间:2020-01-09 10:38:04  来源:igfitidea点击:

Google Chrome/Chromium,Firefox和Opera浏览器支持SPDY网络协议。
它可以在受支持的站点上更快地浏览。

SPDY与HTTP相似,其特定目标是减少网页加载延迟并提高Web安全性。

SPDY通过压缩,多路复用和优先级排序来减少延迟。
如何启用在Debian或Ubuntu Linux服务器上运行的Nginx SPDY支持?

SPDY(发音为快速)是一种主要由Google开发的开放式网络协议,用于传输Web内容。

Nginx版本1.4.x +开箱即用支持SPDY。
您需要1.0.1或更高版本的openssl才能编译和使用nginx。

必备软件

  • Openssl和Openssl开发(libssl)的库版本为1.0.1+。请注意,CentOS/RHEL v6.x.x仅带有OpenSSL版本1.0.0。为了在同一端口上同时接受HTTPS和SPDY连接,这是必需的。所使用的OpenSSL库应支持"下一协议协商TLS"扩展,此扩展自OpenSSL版本1.0.1起可用。如果您使用的是RHEL/CentOS 6.x或更早版本,则需要安装OpenSSL v1.0.1。 最新版本的RHEL/CentOS 6.5带有OpenSSL 1.0.1e-fips,即您可以在CentOS/RHEL 6.5版上编译nginx。有关更多信息,请参见本指南。
  • GNU C编译器和构建工具。
  • Libpcre版本3和libpcre3-dev
  • 最新稳定的nginx版本1.4.x。
  • 以下"网络浏览器"之一:
  • Google Chrome或Chromium(跨平台)
  • Mozilla Firefox(跨平台)Opera(跨平台)
  • Opera(跨平台)

请注意,IE或Safari都不支持SPDY。

安装所需的软件

打开终端和/或使用ssh客户端登录,输入:

$ sudo apt-get install libssl-dev libpcre3 libpcre3-dev

在Debian或Ubuntu Linux上安装编译器和构建工具:

$ sudo apt-get install build-essential

验证版本

执行以下命令:

gcc --version
make --version
openssl version

查找并删除nginx-full和nginx-common的1.1.19版软件包

要删除nginx-full和nginx-comman,请输入:

## backup config files, just in case ##
sudo mkdir -p /root/old.nginx/etc_nginx/
sudo cp -avr /etc/nginx/* /root/old.nginx/etc_nginx/
 
## delete it ##
sudo apt-get remove nginx-full nginx-common

最后,安装nginx,输入:

$ sudo make install

输出示例:

make -f objs/Makefile install
make[1]: Entering directory `/tmp/nginx-1.6.0'
test -d '/etc/nginx' || mkdir -p '/etc/nginx'
test -d '/usr/sbin' 		|| mkdir -p '/usr/sbin'
test ! -f '/usr/sbin/nginx' 		|| mv '/usr/sbin/nginx' 		'/usr/sbin/nginx.old'
cp objs/nginx '/usr/sbin/nginx'
test -d '/etc/nginx' 		|| mkdir -p '/etc/nginx'
cp conf/koi-win '/etc/nginx'
cp conf/koi-utf '/etc/nginx'
cp conf/win-utf '/etc/nginx'
test -f '/etc/nginx/mime.types' 		|| cp conf/mime.types '/etc/nginx'
cp conf/mime.types '/etc/nginx/mime.types.default'
test -f '/etc/nginx/fastcgi_params' 		|| cp conf/fastcgi_params '/etc/nginx'
cp conf/fastcgi_params 		'/etc/nginx/fastcgi_params.default'
test -f '/etc/nginx/fastcgi.conf' 		|| cp conf/fastcgi.conf '/etc/nginx'
cp conf/fastcgi.conf '/etc/nginx/fastcgi.conf.default'
test -f '/etc/nginx/uwsgi_params' 		|| cp conf/uwsgi_params '/etc/nginx'
cp conf/uwsgi_params 		'/etc/nginx/uwsgi_params.default'
test -f '/etc/nginx/scgi_params' 		|| cp conf/scgi_params '/etc/nginx'
cp conf/scgi_params 		'/etc/nginx/scgi_params.default'
test -f '/etc/nginx/nginx.conf' 		|| cp conf/nginx.conf '/etc/nginx/nginx.conf'
cp conf/nginx.conf '/etc/nginx/nginx.conf.default'
test -d '/var/run' 		|| mkdir -p '/var/run'
test -d '/var/log/nginx' || 		mkdir -p '/var/log/nginx'
test -d '/etc/nginx/html' 		|| cp -R html '/etc/nginx'
test -d '/var/log/nginx' || 		mkdir -p '/var/log/nginx'
make[1]: Leaving directory `/tmp/nginx-1.6.0'

Nginx SPDY配置

首先,您需要为Nginx生成并安装SSL证书。
有关更多信息,请参见如何使用nginx设置SSL反向代理/负载平衡SSL代理。
接下来,编辑nginx.conf,输入:

$ sudo vi /usr/local/ngnix/conf/nginx.conf

或者

$ sudo vi /etc/nginx/nginx.conf

查找如下所示的行:

listen          192.54.1.1:443 ssl;

如下更新

listen          192.54.1.1:443 ssl spdy;

保存并关闭文件。
这是完整的文件:

server {
	### server port and name ###
        listen          192.54.1.1:443 ssl spdy;
        server_name     theitroad.com;
 
	### SSL log files ###
        access_log      logs/ssl-access.log;
        error_log       logs/ssl-error.log;
 
	### SSL cert files ###
        ssl_certificate      ssl/theitroad.com.crt;
        ssl_certificate_key  ssl/theitroad.com.key;
 
	### Add SSL specific settings here ###
	ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers RC4:HIGH:!aNULL:!MD5;
     	ssl_prefer_server_ciphers on;
     	keepalive_timeout    60;
	ssl_session_cache    shared:SSL:10m;
     	ssl_session_timeout  10m;
 
	### We want full access to SSL via backend ###
     	location / {
	        proxy_pass  http://theitroad;
 
		### force timeouts if one of backend is died ##
        	proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
 
		### Set headers ####
                proxy_set_header        Accept-Encoding   "";
	        proxy_set_header        Host            $host;
	        proxy_set_header        X-Real-IP       $remote_addr;
	        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
 
		### Most PHP, Python, Rails, Java App can use this header ###
		#proxy_set_header X-Forwarded-Proto https;##
		#This is better##
	        proxy_set_header        X-Forwarded-Proto $scheme;
		add_header              Front-End-Https   on;
 
		## Let the browser know about spdy ##
		add_header        Alternate-Protocol  443:npn-spdy/2;
 
		### By default we don't want to redirect it ####
	        proxy_redirect     off;
}

最后,重新加载nginx服务器,输入:

$ sudo /usr/sbin/nginx -s reload

我如何测试spdy是否正常工作?

  • Firefox用户尝试使用浏览器SPDY指示器插件。
  • Google Chrome或Chromium用户,请尝试使用浏览器SPDY指示器插件。

另外,Chrome浏览器或Chromium用户也可以在地址栏中输入以下内容:

chrome://net-internals/#spdy