域名重定向、用户认证

域名重定向

什么是域名重定向

域名重定向是通过设置web服务的配置文件,将原本访问A域名的请求访问到B域名。

为什么要做域名重定向?

一个比较简单的例子:之前做了一个网站,域名又长又复杂,现在申请了一个新的域名,又短又容易记住(或者是域名能跟品牌匹配),想把新的域名做成主域名来推广,但是有些用户可能将老的域名收藏了,习惯老的域名访问。这时候就可以做域名重定向,将老的域名重定向到新的域名。这样不管是老用户通过老的域名访问,还是新用户通过新的域名访问,最终跳转到的域名都是新的域名。

域名重定向的方式

301 permanent
  • 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
302 redirect
  • 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO(黑帽SEO)曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,像Google前些年对域名之王(Business)以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

域名重定向实例

  • 在虚拟主机配置文件中添加第二个域名
server {
    listen       80;
    server_name  blog.abc.com www.lcblog.com;

像上面这样做(假设两个域名均添加到dnspot中),两个域名是都可以正常访问网站的,但是它们并没有重定向,也就是搜索引擎中给它们的权重不会发生变化,这样对我们新的域名的推广不太友好。

  • 将老的域名重定向到新的域名
server {
    listen       80;
    server_name  blog.abc.com www.lcblog.com;
if ( $host = blog.abc.com )                                   
    {
        rewrite /(.*)  http://www.lcblog.com/$1 permanent; 
            }

在配置文件中添加了if以及后面的这些内容。意思就是当访问blog.abc.com时,将blog.abc.com重定向到www.lcblog.com 后面的内容保持不变,比如blog.abc.com/index.php→www.lcblog.com/index.php; permanent就是定义的301,表示永久重定向。 nginx -t nginx -s reload 验证有无语法错误,重新加载配置文件

  • 验证,使用curl命令验证
[root@localhost blog.abc.com]# curl -x127.0.0.1:80 -I blog.abc.com/1.test       使用的是旧域名
HTTP/1.1 301 Moved Permanently
Server: nginx/1.14.2
Date: Sun, 17 Feb 2019 06:30:57 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://www.lcblog.com/1.test           实际访问的是新域名下的内容

补充内容

  • 如果涉及域名重定向使用301
  • 如果不涉及域名重定向用302:rewrite /1.txt /2.txt redirect;
  • 状态码:200(OK) 404(网页不存在) 301(永久重定向) 302(临时重定向)

用户认证

为了站点的安全,可以通过修改配置文件来针对一些重要的目录(站点后台地址)进行用户认证

用户认证实例

  • 针对admin.php来做用户认证,在配置文件中添加如下内容
location ~ admin.php
{
            auth_basic "Auth";
    auth_basic_user_file /etc/nginx/user_passwd;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/blog.abc.com$fastcgi_script_name;
    include        fastcgi_params;
}
  • nginx -t nginx -s reload 验证有无语法错误,重新加载配置文件
  • 为该站点的admin.php创建用户lisi,需要htpasswd命令,这个命令是由hpptd-tools提供的,所以需要先安装httpd-tools包
[root@localhost blog.abc.com]# yum install httpd-tools -y
[root@localhost blog.abc.com]# htpasswd -c /etc/nginx/user_passwd lisi
New password: 
Re-type new password: 
Adding password for user lisi
  • 上面命令中的-c参数是创建/etc/nginx/user_passwd文件,下一次添加用户就不能使用-c参数了,要不然会把之前的用户的信息都给覆盖掉,入下所示。-m是md5加密。
[root@localhost blog.abc.com]# htpasswd -m /etc/nginx/user_passwd zhangsan

补充

nginx location优先级

location /  优先级比 location ~ 要低,也就是说,如果一个请求(如,aming.php)同时满足两个location
location /amin.php
location ~ *.php$
会选择下面的
nginx location 文档: https://github.com/aminglinux/nginx/tree/master/location

转载于:https://my.oschina.net/u/3731306/blog/3011087

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值