nginx基于域名的虚拟主机配置实战

原文链接: https://yq.aliyun.com/articles/539826

背景:

        在www虚拟主机站点基础上新增一个bbs虚拟主机站点。

1    备份配置文件

1
2
3
[root@web01 conf] # pwd
/application/nginx/conf
[root@web01 conf] # cp nginx.conf{,.oldboy.2017.0819}

2    编辑nginx.conf配置文件,新增bbs虚拟主机站点


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@web01 conf] # vim nginx.conf.oldboy.20170819 
worker_processes  1;
events {
     worker_connections  1024;
}
http {
     include       mime.types;
     default_type  application /octet-stream ;
     sendfile        on;
     keepalive_timeout  65;
     server {
         listen       80;
         server_name  www.etiantian.org;
         location / {
             root   html;
             index  index.html index.htm;
         }
         error_page   500 502 503 504   /50x .html;
         location =  /50x .html {
             root   html;
         }
     }
}

        新增bbs站点后的nginx.conf配置文件为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@web01 conf] # cat nginx.conf
worker_processes  1;
events {
     worker_connections  1024;
}
http {
     include       mime.types;
     default_type  application /octet-stream ;
     sendfile        on;
     keepalive_timeout  65;
     server {
         listen       80;
         server_name  www.etiantian.org;
         location / {
             root   html /www ;
             index  index.html index.htm;
         }
     }
     server {
         listen       80;
         server_name  bbs.etiantian.org;
         location / {
             root   html /bbs ;
             index  index.html index.htm;
         }
     }
}

        修改配置文件后,需要建立站点相关文件

1
2
3
[root@web01 conf] # mkdir ../html/{www,bbs} -p    #相当于在/application/nginx/html/目录下建立www和bbs两个目录
[root@web01 conf] # echo "www" >../html/www/index.html    #在www首页index.html中写入www字母
[root@web01 conf] # echo "bbs" >../html/bbs/index.html    #在bbs首页index.html中写入bbs字母


3    nginx配置文件检查语法查看是否有错误:/application/nginx/sbin/nginx -t    

1
2
3
[root@web01 conf] # /application/nginx/sbin/nginx -t    #自检查看是否有错误
nginx: the configuration  file  /application/nginx-1 .6.3 //conf/nginx .conf syntax is ok
nginx: configuration  file  /application/nginx-1 .6.3 //conf/nginx .conf  test  is successful

    根据提示nginx配置文件检查语法结果成功

4    nginx服务平滑重启

1
[root@web01 conf] # /application/nginx/sbin/nginx -s reload

    apche,nginx等如果平滑重启reload失败那么就用stop和start,禁止用restart

1
2
[root@web01 conf] # /application/nginx/sbin/nginx -s stop    #stop是带-s stop
[root@web01 conf] # /application/nginx/sbin/nginx    #start是直接nginx就是start

5    检查nginx服务80端口是否启动

1
2
3
4
[root@web01 conf] # lsof -i :80
COMMAND  PID USER   FD   TYPE DEVICE SIZE /OFF  NODE NAME
nginx   5784 root    6u  IPv4  23562      0t0  TCP *:http (LISTEN)
nginx   5785  www    6u  IPv4  23562      0t0  TCP *:http (LISTEN)

6    在linux中验证nginx服务是否可用(当然也可以再windows中验证)

    6.1    在管理机m01机器上面本机hosts文件中添加172.16.1.8的dns解析172.16.1.8      web01 www.etiantian.org bbs.etiantian.org

1
2
3
4
5
6
7
8
9
10
11
[root@m01 ~] # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb01
172.16.1.7      web02
172.16.1.8      web01 www.etiantian.org bbs.etiantian.org
172.16.1.51     de01 db01.etiantian.org
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01

    6.2    然后ping www.etiantian.org和bbs.etiantian.org看是否可用解析到172.16.1.8这个ip地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@m01 ~] # ping -c4 www.etiantian.org
PING web01 (172.16.1.8) 56(84) bytes of data.
64 bytes from web01 (172.16.1.8): icmp_seq=1 ttl=64  time =0.629 ms
64 bytes from web01 (172.16.1.8): icmp_seq=2 ttl=64  time =0.432 ms
64 bytes from web01 (172.16.1.8): icmp_seq=3 ttl=64  time =0.439 ms
64 bytes from web01 (172.16.1.8): icmp_seq=4 ttl=64  time =0.654 ms
--- web01  ping  statistics ---
4 packets transmitted, 4 received, 0% packet loss,  time  3003ms
rtt min /avg/max/mdev  = 0.432 /0 .538 /0 .654 /0 .105 ms
[root@m01 ~] # ping -c4 bbs.etiantian.org
PING web01 (172.16.1.8) 56(84) bytes of data.
64 bytes from web01 (172.16.1.8): icmp_seq=1 ttl=64  time =0.896 ms
64 bytes from web01 (172.16.1.8): icmp_seq=2 ttl=64  time =0.459 ms
64 bytes from web01 (172.16.1.8): icmp_seq=3 ttl=64  time =0.782 ms
64 bytes from web01 (172.16.1.8): icmp_seq=4 ttl=64  time =0.445 ms
--- web01  ping  statistics ---
4 packets transmitted, 4 received, 0% packet loss,  time  3005ms
rtt min /avg/max/mdev  = 0.445 /0 .645 /0 .896 /0 .199 ms

    6.3    curl 两个虚拟主机站点名字,看是否可用返回对应的www和bbs内容(首页index.html里面的内容)

1
2
3
4
[root@m01 ~] # curl www.etiantian.org
www
[root@m01 ~] # curl bbs.etiantian.org
bbs

7    windows浏览器中验证

    7.1    在windows主机hosts文件中添加dns解析

             在C:\Windows\System32\drivers\etc\hosts中添加一条主机解析:

             10.0.0.8 www.etiantian.org bbs.etiantian.org

    7.2    在浏览器中分别输入www.etiantian.org 和bbs.etiantian.org可以返回对应的首页内容www和bbs,说明新增域名虚拟主机成功。


nginx配置虚拟主机步骤如下(适合各类虚拟主机类型)
1)增加一个完整的server标签段到结尾处。注意,要放在http的结束大括号前,也就是将server标签段到如http标签。
2)更改server_name及对应网页的root根目录,如果需要其他参数,可以增加或修改。
3)创建server_name域名对应网页的根目录,并且建立测试文件,如果没有index首页,访问会出现    403错误。
4)检查nginx配置文件语法,平滑重启nginx服务,快速检查启动结果。
5)在客户端对server_name处配置的域名做host解析或dns配置,并检查(ping域名看返回的ip对不对)
6)在win32浏览器中输入地址访问,或者在linux客户端做hosts解析,用wget或curl接地址访问。
 nginx虚拟主机的官网帮助网址为:http://nginx.org/en/docs/http/request_processing.html

本文转自sandshell博客51CTO博客,原文链接http://blog.51cto.com/sandshell/1957720如需转载请自行联系原作者


sandshell

你可能感兴趣的:(nginx基于域名的虚拟主机配置实战)