12.9 Nginx域名重定向

Nginx域名重定向目錄概要

  • 更改test.com.conf
server
{
    listen 80;
    server_name test.com test1.com test2.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;
    if ($host != 'test.com' ) {
        rewrite  ^/(.*)$  http://test.com/$1  permanent;
    }
}
  • server_name後面支持寫多個域名,這裏要和httpd的作一個對比
  • permanent爲永久重定向,狀態碼爲301,若是寫redirect則爲302

Nginx域名重定向

  • 在Nginx裏「server_name」 支持跟多個域名;可是Apache「server_name」只能跟一個域名,須要跟多個域名,須要使用Alisa;
  • 在Nginx的conf配置文件裏「server_name 」 設置了多個域名,就會使網站的權重變了,到底須要哪一個域名爲主站點,因此須要域名重定向
  1. 修改配置文件vim /usr/local/nginx/conf/vhost/test.com.conf,(這裏刪除用戶認證那一塊代碼)
[root@hf-01 vhost]# vim test.com.conf

server
{
    listen 80;
    server_name test.com test1.com test2.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;
    if ($host != 'test.com' ) {
        rewrite  ^/(.*)$  http://test.com/$1  permanent;
    }
}
保存退出
  • if ($host != ‘test.com’ ) //假如域名,「!=」不等於 test.com,將執行下面的腳本
  • rewrite ^/(.)$ http://test.com/$1 permanent; // ^/(.)$ 正式寫法 http://$host/(.*)$ 這段能夠直接省略掉的,同時還能夠加上一些規則,
  • permanent 就是301的意思
  • 若是想弄成302,只須要更改成 redirect
  1. 檢查配置文件語法錯誤,並從新加載配置文件
[root@hf-01 vhost]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@hf-01 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@hf-01 vhost]#
  1. 測試,用test2.com去訪問,會看到顯示301,給它重定向到了http://test.com/index.html
[root@hf-01 vhost]# curl -x127.0.0.1:80 test2.com/index.html -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.1
Date: Wed, 03 Jan 2018 22:23:52 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://test.com/index.html

[root@hf-01 vhost]#
  1. 定義一個不一樣的網址再來測試訪問
[root@hf-01 vhost]# curl -x127.0.0.1:80 test2.com/admin/index.html -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.1
Date: Wed, 03 Jan 2018 22:25:57 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://test.com/admin/index.html

[root@hf-01 vhost]#
  1. 它會訪問默認虛擬主機
  2. 這時如果隨意訪問一個不存在的網址,則會顯示404
[root@hf-01 vhost]# curl -x127.0.0.1:80 hanfeng.com/admin/index.html -I
HTTP/1.1 404 Not Found
Server: nginx/1.12.1
Date: Wed, 03 Jan 2018 22:27:37 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive

[root@hf-01 vhost]#
相關文章
相關標籤/搜索