nginx https 搭建

分类:技术文档 - Linux | 阅读(6970) | 发布于:2015-09-09 10:12

安装openssl
	yum -y install openssl  openssl-devel
查看ngixn版本极其编译参数
	/usr/local/nginx/sbin/nginx -V
	# nginx version: nginx/1.8.0
	# built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
	# built with OpenSSL 1.0.1e-fips 11 Feb 2013
	# TLS SNI support enabled
	# configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_gzip_static_module
找到最初编译安装nginx的包的解压目录重新编译,configure的时候加上"--with-http_ssl_module"
	cd nginx-1.4.7
	# 注意:添加编译模块,所以必须把第2步看到的编译模块加上,下面列出的是新加模块
	./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_gzip_static_module --with-http_ssl_module
	make
	# make后千万别make install 否则就覆盖安装了
	
	# 备份旧的nginx程序
	cp /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.bak
	
	#把新的nginx程序覆盖旧的
	cp objs/nginx /usr/local/nginx/sbin/nginx
	#如果提示 cp:cannot create regular file `/usr/local/nginx/sbin/nginx‘: Text file busy  建议使用如下语句cp
    cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
	
	#测试新的nginx程序是否正确
	/usr/local/nginx/sbin/nginx -t
	# nginx: theconfiguration file /usr/local/nginx/conf/nginx.conf syntax is ok
	# nginx:configuration file /usr/local/nginx/conf/nginx.conf test issuccessful

	# 平滑重启nginx
	/usr/local/nginx/sbin/nginx -s reload

	#查看ngixn版本及新的编译参数
	/usr/local/nginx/sbin/nginx -V
至此nginx的https模块安装完毕,下面需要生成https证书及密匙
	#自己颁发证书给自己:
	cd /usr/local/nginx/conf
	# 创建服务器私钥,命令会让你输入一个口令:
	openssl genrsa -des3 -out server.key 1024
	# 创建签名请求的证书(CSR)
	openssl req -new -key server.key -out server.csr
	# 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
	# 拷贝一个不需要输入密码的密钥文件
	cp server.key server.key.org
	openssl rsa -in server.key.org -out server.key
	# 最后标记证书使用上述私钥和CSR:
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
至此证书已经生成完毕,下面就是配置nginx
	server {
		# ...(略)
		listen 443;
		# 为一个server开启ssl支持
		ssl on;
		# 为虚拟主机指定pem格式的证书文件
		ssl_certificate  /usr/local/nginx/conf/server.crt;
		# 为虚拟主机指定私钥文件
		ssl_certificate_key  /usr/local/nginx/conf/server.key;
		#客户端能够重复使用存储在缓存中的会话参数时间
		ssl_session_timeout  5m;
		#指定使用的ssl协议
		ssl_protocols  SSLv3 TLSv1;
		#指定许可的密码描述
		ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
		#SSLv3和TLSv1协议的服务器密码需求优先级高于客户端密码
		ssl_prefer_server_ciphers  on;
		# ...(略)
	}
另外还可以加入如下代码实现80端口重定向
    server {
		listen 80;
		server_name www.test.com;
		rewrite ^(.*) https://$server_name$1 permanent;
    }
至此已经完成了nginx https服务器搭建

标签:httpsnginx