Nginx域名重定向目錄概要
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 」 設置了多個域名,就會使網站的權重變了,到底須要哪一個域名爲主站點,因此須要域名重定向
- 修改配置文件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
- 檢查配置文件語法錯誤,並從新加載配置文件
[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]#
- 測試,用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]#
- 定義一個不一樣的網址再來測試訪問
[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]#
- 它會訪問默認虛擬主機
- 這時如果隨意訪問一個不存在的網址,則會顯示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]#