域名重定向、用戶認證

域名重定向

什麼是域名重定向

域名重定向是經過設置web服務的配置文件,將本來訪問A域名的請求訪問到B域名。php

爲何要作域名重定向?

一個比較簡單的例子:以前作了一個網站,域名又長又複雜,如今申請了一個新的域名,又短又容易記住(或者是域名能跟品牌匹配),想把新的域名作成主域名來推廣,可是有些用戶可能將老的域名收藏了,習慣老的域名訪問。這時候就能夠作域名重定向,將老的域名重定向到新的域名。這樣無論是老用戶經過老的域名訪問,仍是新用戶經過新的域名訪問,最終跳轉到的域名都是新的域名。html

域名重定向的方式

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中),兩個域名是均可以正常訪問網站的,可是它們並無重定向,也就是搜索引擎中給它們的權重不會發生變化,這樣對咱們新的域名的推廣不太友好。linux

  • 將老的域名重定向到新的域名
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 驗證有無語法錯誤,從新加載配置文件nginx

  • 驗證,使用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(臨時重定向)

用戶認證

爲了站點的安全,能夠經過修改配置文件來針對一些重要的目錄(站點後臺地址)進行用戶認證git

用戶認證明例

  • 針對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優先級github

location /  優先級比 location ~ 要低,也就是說,若是一個請求(如,aming.php)同時知足兩個location
location /amin.php
location ~ *.php$
會選擇下面的
nginx location 文檔: https://github.com/aminglinux/nginx/tree/master/location
相關文章
相關標籤/搜索