文档章节

域名重定向、用户认证

李超小牛子
 李超小牛子
发布于 02/17 15:10
字数 1132
阅读 5
收藏 0

域名重定向

什么是域名重定向

域名重定向是通过设置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

© 著作权归作者所有

共有 人打赏支持
李超小牛子
粉丝 6
博文 132
码字总数 143114
作品 0
通州
私信 提问
LNMP架构虚拟主机配置、用户认证及域名重定向

11月26日任务 12.6 Nginx安装 https://my.oschina.net/u/3964535/blog/2933878 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx域名重定向 配置nginx虚拟主机 修改nginx主配置文件 创建并修...

robertt15
2018/11/26
0
0
LAMP架构用户认证、域名跳转及访问日志

11月15日任务 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 apache用户认证 针对目录 先确保主配置文件内开启了虚拟主机服务 编辑虚拟主机配置文件 用户加密 -c 创建 -m...

robertt15
2018/11/15
0
0
HTTPS 升级指南

上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效。 为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章。 《HTTPS...

阮一峰
2016/08/26
0
0
Nginx安装.默认虚拟主机...

11月26日任务 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx域名重定向 1.Nginx安装 示例一: cd /usr/local/src 进入目录下 wget http://nginx.org/download/nginx-1.1...

hhpuppy
2018/11/26
0
0
【和我一起学jeesite】jeesite结合CAS做单点登录

1、cas实现通过ad域进行认证 搭cas服务器环境,配置一下deployerConfigContext.xml即可,相当简单,上代码!导证书啥的自己百度,我之前文章也介绍过,很简单。不再多说,我是使用ldap进行认...

hello_bear
2016/06/17
0
12

没有更多内容

加载失败,请刷新页面

加载更多

3.系统和内存架构

在设计程序或并发系统时,需要考虑不同的系统和内存架构风格。 支持并发的计算机系统体系结构 1972年,迈克尔弗林(Michael Flynn)给出了用于分类不同风格计算机系统体系结构的分类法。 该分类...

Eappo_Geng
22分钟前
4
0
今天的学习

1,getimagesize:获得目标图像的大小 2,image_type_to_extension:获得目标文件的后缀信息 3,imagealphablending:设定目标图像混色的模式 4,imagechar:水平的画出一个字符 5,imagecharup...

墨冥
25分钟前
1
0
Java线程中yield与join方法的区别

长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。...

飓风2000
49分钟前
4
0
Python的 is 和 == 弄懂了吗?

在Python中一切都是对象。 Python中对象包含的三个基本要素,分别是: id(身份标识) type(数据类型) value(值) 对象之间比较是否相等可以用 == ,也可以用 is 。 is 和 == 都是对对象进行比较...

上海小胖
49分钟前
2
0
angularJS 路由加载js controller 未定义 解决方案

说明 本文主要说明,在angularJS框架使用中,angularJS 路由加载js controller 未定义 解决方案。 路由 $routeProvider 异步加载js 路由的基本用法,请查看官方文档,下面实例只说明,懒加载...

DrChenXX
57分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部