刚把本站实现了全站强制https访问,Nginx下并且建站程序是wordpress实现的方法网上很多,我也看了许多,踩过了不少坑终于是弄出来了...
给出nginx的config配置吧:
# Settings for a TLS enabled server.
server {
listen 443;
server_name localhost;
ssl on;
root /usr/www;
index index.php index.html;
ssl_certificate cert/214082939610963.pem;
ssl_certificate_key cert/214082939610963.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;
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
说明一下关键的配置项目:
#root /usr/www;
这是你的网站根目录
#ssl_certificate cert/214082939610963.pem;
#这是你申请得到的ssl证书保存的路径,我是保存到服务器的Nginx.conf所在目录下的cert目录的。
#ssl_certificate_key cert/214082939610963.key;
#这是你申请得到的ssl证书key的路径,和上面的证书路径保持一致。
#另外如果你需要强制https访问,就在监听80端口的增加:
server {
listen 80;
return 301 https://$host$request_uri;
}
按照这个配置后,还需要进入wordpress后台-设置-常规-WordPress地址(URL)已及 站点地址(URL)该为https格式。
其实上面配置的其他部分有部分就是在重写url以实现静态页面,你只需要在wordpress后台设置-固定链接设置需要的链接格式就能实现伪静态了,比如我就设置的固定链接格式为:/archives/%post_id%.html
这样就实现了nginx下wordpress站点全局https伪静态了,如果你的网站部分页面的小绿锁消失,可以F12打开console查看报错信息,大都是页面引用了非https地址头的资源,在相应地方修改就是。