Linux运维-day47-综合架构-nginx虚拟主机

一、nginx虚拟主机

1个虚拟主机相当于是一个网站
nginx中多个server标签

1.1 nginx相关错误

ping 域名
curl 域名(nginx服务)
nginx配置之后,要检查语法并reload

1.2 虚拟主机的常见类型

基于域名的虚拟主机:不同的域名访问不同虚拟主机(网站)
基于端口:不同的端口访问不同的虚拟主机----网站需要特殊端口的时候使用
基于IP虚拟主机:不同的IP地址访问不同的虚拟主机,在负载均衡的时候也会使用

实例1.2.1 基于域名的虚拟主机的配置

\\\在nginx进行配置
[root@web01 ~]# vim /etc/nginx/nginx.conf 
……
  server   {
        listen       80;
        server_name  www.oldboy.com;
        location / {
        root   /usr/share/nginx/html/www;
        index  index.html index.htm;
        }  
    }   
  server   {
        listen       80;
        server_name  blog.oldboy.com;
        location / {
        root   /usr/share/nginx/html/blog;
        index  index.html index.htm;
        }
    }

\\\创建index.html文件   
[root@web01 ~]# for i in www blog ;do echo  $i.oldboy.com>/usr/share/nginx/html/$i/index.html;done

\\\检查语法
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

\\\平滑启动nginx服务
[root@web01 ~]# systemctl reload nginx
[root@web01 ~]# cat /usr/share/nginx/html/{www,blog}/index.html
www.oldboy.com
blog.oldboy.com

\\\新添加的域名一定要进行hosts解析
[root@web01 ~]# vim /etc/hosts
……
172.16.1.7      web01 www.oldboy.com blog.oldboy.com 
……

\\\检查域名是否可用
[root@web01 ~]# curl www.oldboy.com  
www.oldboy.com
[root@web01 ~]# blog.oldboy.com

实例1.2.2 基于端口的配置

\\\在nginx进行配置
[root@web01 ~]# vim /etc/nginx/nginx.conf 
……
  server   {
        listen       81;
        server_name  www.oldboy.com;
        location / {
        root   /usr/share/nginx/html/www;
        index  index.html index.htm;
        }
    }
  server   {
        listen       82;
        server_name  blog.oldboy.com;
        location / {
        root   /usr/share/nginx/html/blog;
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl reload  nginx 

\\\检查配置之后的端口
[root@web01 ~]# ss -lntup|grep nginx
tcp    LISTEN     0      128       *:81                    *:*                   users:(("nginx",pid=51376,fd=10),("nginx",pid=30059,fd=10))
tcp    LISTEN     0      128       *:82                    *:*                   users:(("nginx",pid=51376,fd=11),("nginx",pid=30059,fd=11))
[root@web01 ~]# curl www.oldboy.com
curl: (7) Failed connect to www.oldboy.com:80; Connection refused
[root@web01 ~]# curl http://10.0.0.7:81
www.oldboy.com
[root@web01 ~]# curl http://10.0.0.7:82
blog.oldboy.com
[root@web01 ~]# 

实例1.2.3 基于IP虚拟主机的配置

[root@web01 ~]# vim /etc/nginx/nginx.conf 
……
  server   {
        listen      10.0.0.7:80;
        server_name  www.oldboy.com;
        location / {
        root   /usr/share/nginx/html/www;
        index  index.html index.htm;
        }
    }
  server   {
        listen       10.0.0.9:80;
        server_name  blog.oldboy.com;
        location / {
        root   /usr/share/nginx/html/blog;
        index  index.html index.htm;
        }
    }

}
"/etc/nginx/nginx.conf" 49L, 1004C written   
\\检查报错,语法没错,但是里面的指定10.0.0.9这个端口在本地不存在                                                                         
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] bind() to 10.0.0.9:80 failed (99: Cannot assign requested address)
nginx: configuration file /etc/nginx/nginx.conf test failed

\\\因为新添加的10.0.0.0.9这个网段在本机没有,需要添加
[root@web01 ~]# ip addr add 10.0.0.9/24 dev eth0 label eth0:1
[root@web01 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:36:af:f4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.7/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.9/24 scope global secondary eth0:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe36:aff4/64 scope link 
       valid_lft forever preferred_lft forever
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl restart nginx
[root@web01 ~]# ss -lntup|grep nginx  \\检查端口
tcp    LISTEN     0      128    10.0.0.9:80                    *:*                   users:(("nginx",pid=51851,fd=7),("nginx",pid=51850,fd=7))
tcp    LISTEN     0      128    10.0.0.7:80                    *:*                   users:(("nginx",pid=51851,fd=6),("nginx",pid=51850,fd=6))
[root@web01 ~]# curl 10.0.0.7:80
www.oldboy.com
[root@web01 ~]# curl 10.0.0.9:80
blog.oldboy.com
[root@web01 ~]# 

1.3 nginx处理用户请求过程※※※

http://nginx.org/en/docs/http/request_processing.html

1>看nginx配置中指定的端口
2>是否有我想要的域名(host)
  如果有,使用这个虚拟主机
  如果没有,使用默认的虚拟主机(第1个)

在这个配置中,nginx只测试请求的头字段“host”,以确定请求>应该路由到哪个服务器。如果它的值与任何服务器名称不匹配,或者请求根本不包含这个头字段,那么nginx将把请求路由到这个端口的默认服务器。在上面的配置中,默认服务器是第一个——这是nginx的标准默认行为。还可以通过listen指令中的default_server参数明确设置默认服务器:

> <pre style="padding: 0px; margin: 0px;">
server { listen 80 **default_server** ; 
server_name example.net www.example.net; 
...  
}</pre>

二、nginx核心配置※※※

2.1 nginx日志格式

log_format:指定nginx日志格式
access_log:开启日志,指定日志文件
  buffer=16k
  flush=time
gzip 压缩
解压:gzip -d
看压缩包中的内容用以下命令:zcat、zless、zgrep、zmore、zegrep ,如:zcat /etc/nginx/conf.d/default.conf.gz

log_format日志格式的详细介绍

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

'$remote_addr          \\客户端ip地址
$remote_user          \\远程用户(空) 
[$time_local]          \\时间 
"$request"              \\请求报文的起始行 $request_uri 只取出uri
'$status                  \\状态码 
$body_bytes_sent          \\服务端发给客户端大小(每个文件的大小)
"$http_referer"           \\记录着用户从哪里跳转过来的
'"$http_user_agent"       \\用户浏览器 
"$http_x_forwarded_for"';  \\负载均衡: web服务器用来记录用户真实ip地址  

注:nginx -V:检查nginx所有的模块:

2.2 nginx配置文件切割

include文件包含(引用)

实例2.2.1 ##不同的虚拟主机如何指定不同的日志文件

[root@web01 ~]# vim /etc/nginx/nginx.conf 
……
  server   { 
        listen      80;
        server_name  www.oldboy.com;
        location / { 
        root   /usr/share/nginx/html/www;
        index  index.html index.htm;
        access_log  /var/log/nginx/access_www.log  main;
        }
    }   
  server   {
        listen       80;
        server_name  blog.oldboy.com;
        location / { 
        root   /usr/share/nginx/html/blog;
        index  index.html index.htm;
        access_log  /var/log/nginx/access_blog.log  main;
        }
    }   
    
"/etc/nginx/nginx.conf" 51L, 1102C written
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl reload nginx
[root@web01 ~]# ll /var/log/nginx/
total 12
-rw-r--r-- 1 root  root    0 Jun  5 11:48 access_blog.log
-rw-r----- 1 nginx adm  5058 Jun  5 11:20 access.log
-rw-r--r-- 1 root  root    0 Jun  5 11:48 access_www.log
-rw-r----- 1 nginx adm  2013 Jun  5 11:20 error.log
[root@web01 ~]# 

实例2.2.2 在实际工作中会有很多的虚拟主机,都配置到/etc/nginx/nginx.conf 中会配置多的server标签,也不好管理,估将不同的server标签分为不同的文件

[root@web01 ~]# vim /etc/nginx/nginx.conf 
……
    include /etc/nginx/conf.d/*.conf;
}

[root@web01 ~]# vim /etc/nginx/conf.d/01-www.conf
server   {
        listen      80;
        server_name  www.oldboy.com;
▽       location / {
        root   /usr/share/nginx/html/www;
        index  index.html index.htm;
        access_log  /var/log/nginx/access_www.log  main;
        }
 }
                                                                                                                                    
"01-www.conf" [New] 9L, 242C written                                                                                
[root@web01 ~]# vim /etc/nginx/conf.d/02-blog.conf
server   {
        listen       80;
        server_name  blog.oldboy.com;
        location / {
        root   /usr/share/nginx/html/blog;
        index  index.html index.htm;
        access_log  /var/log/nginx/access_blog.log  main;
        } 
 }

[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl reload nginx
[root@web01 ~]# ll /etc/nginx/conf.d/
total 16
-rw-r--r-- 1 root root 242 Jun  5 12:00 01-www.conf
-rw-r--r-- 1 root root 246 Jun  5 12:00 02-blog.conf
-rw-r--r-- 1 root root 488 Apr 23 22:34 default.conf.gz
[root@web01 ~]# curl www.oldboy.com
www.oldboy.com
[root@web01 ~]# curl blog.oldboy.com
blog.oldboy.com
[root@web01 ~]#  

注:将默认的站点目录default.conf用gzip压缩,不然会有影响,解压用gzip -d,查看gzip压缩用命令:zcat、zless、zgrep、zmore、zegrep

2.3 nginx状态模块机权限控制

配置状态模块

[root@web01 /etc/nginx/conf.d]# vim status.conf
server{
    listen   80;
    server_name   status.oldboy.com;
    stub_status  on;
    access_log  off;
}                                                                                                                                   
~                                                                                                                                     
"status.conf" [New] 7L, 108C written                                                                                
[root@web01 /etc/nginx/conf.d]# vim /etc/hosts
……
172.16.1.7      web01 www.oldboy.com blog.oldboy.com bbs.oldboy.com status.oldboy.com
                                                                          
[root@web01 /etc/nginx/conf.d]# systemctl reload nginx
[root@web01 /etc/nginx/conf.d]# curl status.oldboy.com
Active connections: 1 
server accepts handled requests
 13 13 13 
Reading: 0 Writing: 1 Waiting: 0 
[root@web01 /etc/nginx/conf.d]# 

如果指定某个ip网段可以查看状态,其他网段都不能查看,进行以下设置即可

权限控制

未完……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容

  • linux运维学习笔记:nginx系列之03:nginx虚拟主机 作者:周少言201年 月 日 星期 ,于北京 声...
    周少言阅读 352评论 1 1
  • 编译安装nginx并软连接 一件安装nginx 一、实践基于域名的虚拟主机 1、配置基于域名的nginx.conf...
    1220阅读 1,028评论 0 0
  • Nginx有什么作用呢? Ngnix作为一款高性能的HTTP服务器、反向代理服务器、电子邮件代理服务器,主要有三方...
    JunChow520阅读 3,137评论 1 14
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,592评论 2 57
  • The queen of ants group lays eggs throughout her life. Th...
    魏青年阅读 335评论 0 0