Nginx 强制 https 设置 HTTP 301 重定向到 HTTPS
全站启用https让您的网站更安全,但是在过程中总会遇到一些麻烦,分享这篇文章希望对需要的童鞋有帮助,我们不需要去过多的修改程序设置,直接在WEB服务器(Nginx)中配置一下,将80端口(HTTP)全部301重定向到HTTPS,目前 TypechoWiki 就是使用的这个方法。
一、前提条件
此方法仅适用于 Nginx WEB 服务,推荐安装军哥 LNMP 或 OneinStack 或 宝塔面板,自己编译安装的Nginx也是可以的。
二、修改主机配置文件
军哥LNMP或OneinStack的配置文件在 /usr/local/nginx/conf/vhost/youdomain.com.conf
,将下面的配置添加到文件中。
server
{
listen 80;
server_name typecho.wiki www.typecho.wiki;
rewrite ^(.*) https://www.typecho.wiki/t$1 permanent;
}
上面的配置含义是当我们去使用HTTP请求 typecho.wiki 或 typecho.wiki 的时候全部301重定向到 https://www.typecho.wiki/t ,下面是本站的完整配置文件供参考:
server
{
listen 80;
listen 443 ssl http2;
server_name typecho.wiki *.typecho.wiki www.typecho.wiki;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/typecho.wiki;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#301-START
if ($host ~ '^typecho.wiki'){
return 301 https://www.typecho.wiki/t$request_uri;
}
#301-END
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /etc/letsencrypt/live/typecho.wiki/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/typecho.wiki/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
#SECURITY-START 防盗链配置
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
expires 30d;
access_log off;
valid_referers none blocked *.typecho.wiki www.typecho.wiki typecho.wiki;
if ($invalid_referer){
return 404;
}
}
#SECURITY-END
include enable-php-70.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/typecho.wiki.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$
{
expires 12h;
access_log off;
}
access_log /www/wwwlogs/typecho.wiki.log;
error_log /www/wwwlogs/typecho.wiki.error.log;
}
配置修改后别忘记重载一下Nginx: service nginx reload
三、CURL测试
最后我们可以测试下访问HTTP是否会301重定向到HTTPS,可以使用CURL测试一下:curl -I www.typecho.wiki
,Nginx配置SSL的教程可以参考:Nginx怎样部署SSL证书。
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。