存档

2019年6月 的存档

ubuntu中nginx配置ssl证书使用https,外加阿里云cdn配置详解

2019年6月11日 没有评论

在ubuntu系统中nginx配置ssl证书使用https如何操作?

我的操作案例中将http://aaa.com和http://ww.aaa.com解析到了源服务器IP,在源服务器nginx里面http段增加了server如下代码:(代码标记①)

server{
        listen 80;
	#如果域名没使用阿里云cdn,那么此处应该增加一个www.aaa.com
	#不带www和ww解析到了本服务器的80端口,而www解析到了阿里云
	#阿里云ssl证书控制台要将证书部署到cdn
	#阿里云cdn控制台要将源站ip端口改为443,回源配置中的回源SNI要设置为www.aaa.com,https配置中开启强制跳转
	#等于80端口将server_name全部301到443端口
        server_name aaa.com ww.aaa.com;
	rewrite ^(.*) https://www.aaa.com$1 permanent;
}

主要用来将http:// aaa.com和http:// ww.aaa.com自动跳转至https://www.aaa.com(那么此处会遗留一个问题,就是http://www.aaa.com如何跳转至https://www.aaa.com呢?刚刚添加的代码中已经解释了,要开启阿里云cdn的https配置中开启强制跳转),由此就解决了http://aaa.com和http:// ww.aaa.com和http://www.aaa.com全部301跳转至https://www.aaa.com。

需要注意的是,阿里云的配置有几处需要修改:
1,阿里云ssl证书控制台要将证书部署到cdn
2,阿里云cdn控制台要将源站ip端口改为443
3,回源配置中的回源SNI要设置为www.aaa.com
4,https配置中开启强制跳转

好了,接下来就是本机服务器的配置ssl使用https来监听443端口了,到/etc/nginx/conf.d.my目录下(我自己新建的配置文件目录是conf.d.my,利于打理),新建ssl_cert用于存放证书目录,/etc/nginx/conf.d.my/ssl_cert,在nginx的http段中增加相应的server代码:(代码标记②)

server {
	#只监听443 ssl,需要单独加server listen 80
	listen 443 ssl;

	#80和443同时可以访问
	#listen 80;
	#listen 443 default ssl;		

	#nginx 1.15版本如果使用listen 443 ssl,删除ssl on就行了
	#ssl on;

	server_name www.aaa.com;

	ssl_certificate conf.d.my/ssl_cert/www.aaa.com.pem;
	ssl_certificate_key conf.d.my/ssl_cert/www.aaa.com.key;
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;

	root /www/webroot/aaa.com/;
	#下面的代码是我自己的配置,网友需要更改为自己的实际情况
	include /etc/nginx/conf.d.my/server/agent.deny.conf;
	include /www/webroot/aaa.com/.htaccess;
	location / {
		try_files $uri $uri/ =404;
		index index.html index.php index.htm;
	}
	location ~ \.php$ {
		include fastcgi_params;
		include /etc/nginx/conf.d.my/location/fastcgi_params;
		include /etc/nginx/conf.d.my/location/limit_req;
		fastcgi_param PHP_ADMIN_VALUE "open_basedir=/www/webroot/aaa.com/:/tmp/";
	}
	location ~ /\.htaccess {
		deny all;
	}
}

特别注意,上方的代码中:
ssl_certificate conf.d.my/ssl_cert/www.qibangkeji.com.pem;
ssl_certificate_key conf.d.my/ssl_cert/www.qibangkeji.com.key;
不能使用绝对路径,比如不能写成:/etc/nginx/conf.d.my/ ssl_cert/www.qibangkeji.com.pem; 否则会报错。

以上就是ubuntu中nginx配置ssl证书使用https,外加阿里云cdn配置详解。如有错误欢迎指正。

当然,如果不使用阿里云的cdn,就将www和不带www的和ww都解析到源服务器IP,然后修改代码片段①即可:

server{
        listen 80;
        server_name aaa.com ww.aaa.com www.aaa.com;
	rewrite ^(.*) https://www.aaa.com$1 permanent;
}

css.php