LNMP下Nginx如何设置域名301重定向
作者:licess 发布时间:2013年03月26日 分类:常见问题
LNMP下的Nginx如果想将域名lnmp.wpcoder.cn 301重定向到www.lnmp.wpcoder.cn,同时www.lnmp.wpcoder.cn已经添加上,可以按如下步骤修改 使用命令编辑器vi、nano或winscp图形管理软件编辑对应的虚拟主机,一般虚拟主机配置文件位于:/usr/local/nginx/conf/vhost/域名.conf ,如添加的域名是www.lnmp.wpcoder.cn则配置文件是/usr/local/nginx/conf/vhost/www.lnmp.wpcoder.cn.conf 在配置文件代码如下:
lnmp.wpcoder.cn 301跳转到www.lnmp.wpcoder.cn示例配置如下:
省略www.lnmp.wpcoder.cn虚拟主机server配置 server {
listen 80;
server_name lnmp.wpcoder.cn;
return 301 http://www.lnmp.wpcoder.cn$request_uri;
}
如果是想让http强制跳转到https,把里面的http换成https就行。
http站点301跳转到https站点示例配置如下:
server {
listen 443 ssl;
server_name www.lnmp.wpcoder.cn;
省略其他配置
} server {
listen 80;
server_name lnmp.wpcoder.cn;
return 301 https://www.lnmp.wpcoder.cn$request_uri;
}
按上面例子修改完成后保存,执行:/etc/init.d/nginx restart 重启nginx,使其生效。
该设置不适用于Let'sEncrypt及其他需要http验证的SSL证书;如果使用DNS API方式可以使用这种设置方法。
如果是想让https://lnmp.wpcoder.cn强制跳转到https://www.lnmp.wpcoder.cn
可以在https的虚拟主机配置文件中root行或server_name行下面添加上
if ($host = 'lnmp.wpcoder.cn') { return 301 https://www.lnmp.wpcoder.cn$request_uri; }
如果要设置对应域名的http跳到对应https站点上
如:http://lnmp.wpcoder.cn 跳到 https://lnmp.wpcoder.cn,http://www.lnmp.wpcoder.cn 跳到 https://www.lnmp.wpcoder.cn 上。
在对应域名的http虚拟主机配置文件中添加:return 301 https://$host$request_uri;
如果使用Let'sEncrypt免费SSL证书
使用的Let's Encrypt的免费证书且使用http验证方式生成的SSL证书,如果你要想设置301,编辑要设置301域名的nginx虚拟主机配置文件,找到包含有listen 80;的server段,在
location ~ /.well-known { allow all; }
这几行下面添加,如下配置:
location / { return 301 https://$host$request_uri; }
保存,如果不设置会导致证书无法正常续期。
完整的适用于Let'sEncrypt的301跳转配置文件如下:
server { listen 80; #listen [::]:80; server_name lnmp.wpcoder.cn www.lnmp.wpcoder.cn; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/lnmp.wpcoder.cn; location ~ /.well-known { allow all; } location / { return 301 https://$host$request_uri; } }
注意:以上所有更改nginx的配置都需要重启ngin生效。