这篇日志记录下nginx配置https服务的过程。
服务器环境centos7.4
域名ssl证书可以去你的域名服务商那里免费下载,这个不多说了。
具体怎么配置官方都是有介绍的,我的证书是阿里云的:下边这个链接是阿里云的教程:
这个教程里边说的没问题,但是还是要根据自己的实际情况来。
之前说过,我配置多站点的方法是一个站点一个域名配置文件,这样在配置https的时候也就方便了。
具体请移步《nginx配置多站点同时运行》
下边是我其中一个域名配置文件的代码:
server { listen 443; # 监听端口 server_name xxxxxx.guanchao.site; # 站点域名 root /xxx/xxx/xxx/xxx/xxx/xxx; # 站点根目录 index index.html index.htm index.php; # 默认导航页 #https配置 ssl on; ssl_certificate cert/vue/1962730_xxxxxx.guanchao.site.pem; ssl_certificate_key cert/vue/1962730_xxxxxx.guanchao.site.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; # 固定链接URL重写 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } } # 配置错误页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # 配置PHP访问 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #下面两句是给fastcgi权限,可以支持 ?s=/module/controller/action的url访问模式 fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #下面两句才能真正支持 index.php/index/index/index的pathinfo模式 fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } #开启gzip功能 gzip on; #开启gzip静态压缩功能 gzip_static on; #gzip缓存大小 gzip_buffers 4 16k; #gzip http版本 gzip_http_version 1.1; #gzip 压缩级别 1-10 gzip_comp_level 5; #gzip 压缩类型 gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;# 是否在http header中添加Vary: Accept-Encoding,建议开启gzip_vary on; } server { listen 80; server_name vue.guanchao.site; rewrite ^(.*)$ https://$host$1 permanent; #将该域名的http访问重写至https }
监听80的那段server建议留着,将所有的http请求都转发到https上。
理论上,这样配置完就好用了。
但是,网页无法访问。
事先说明一下,上边的配置是没有问题的,问题出在了,我服务器的443端口没有开放,所以,网站一直无法访问。
如果你也像我一样这样配置完成,发现网站无法访问,先去看看服务器的443端口是否开启。这个重要。