image

一、Nginx虚拟主机

  • 虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响。

nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置。
1、基于ip的虚拟主机, (一块主机绑定多个ip地址)
2、基于端口的虚拟主机 (端口来区分虚拟主机——应用:公司内部网站,外部网站的管理
后台)
3、基于域名的虚拟主机 (server_name来区分虚拟主机——应用:外部网站)


1、基于多IP的方式
[root@web01 conf.d]# cat game2.conf 
server {
    listen 80;
    server_name 192.168.15.7;
    location / {
	root /opt/Super_Marie;
        index index.html;
    }
}
server {
    listen 80;
    server_name 172.16.1.7;
    location / {
        root /opt/tank;
        index index.html;
    }
}

2、基于多端口的方式
[root@web01 conf.d]# cat game3.conf 
server {
    listen 80;
    server_name 192.168.15.7;
    location / {
        root /opt/Super_Marie;
        index index.html;
    }
}
server {
    listen 81;
    server_name 192.168.15.7;
    location / {
        root /opt/tank;
        index index.html;
    }
}

3、基于多域名的方式
[root@web01 conf.d]# cat game4.conf 
server {
    listen 80;
    server_name www.game.com;
    location / {
        root /opt/Super_Marie;
        index index.html;
    }
}
server {
    listen 80;
    server_name www.game1.com;
    location / {
        root /opt/tank;
        index index.html;
    }
}

二、日志配置

nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外
一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,一般在nginx的
配置文件中日记配置(/usr/local/nginx/conf/nginx.conf)。

网站状态码是500的比例	
网站的访问来源
网站排错

$remote_addr  : 客户端IP
$http_x_forwarded_for  : 真实的客户端IP(在反向代理中生效)

image

三、Nginx访问控制模块

1、ngx_http_access_module

允许或者拒绝某些IP访问
deny	: 拒绝
allow	:允许

案例1:允许192.168.15.1访问,不允许其他IP访问
    allow 192.168.15.1; 
    deny all;

案例2:允许192.168.15.0这个网段访问,不允许其他网段访问
    allow 192.168.15.0/24;
    deny all;

案例3:只允许通过VPN来访问
   allow 172.16.1.81; 
   deny all;

2、ngx_http_auth_basic_module

访问之前需要登录

1、安装httpd-tools
[root@web01 ~]# yum install httpd-tools -y

2、生成用户名密码文件
[root@web01 ~]# htpasswd -c /etc/nginx/auth chenyang
New password: 
Re-type new password: 
Adding password for user chenyang

3、将文件路径加入Nginx配置
[root@web01 ~]# vim /etc/nginx/conf.d/game4.conf
    auth_basic "Welcome To Login";
    auth_basic_user_file /etc/nginx/auth;

4、重启Nginx
[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 

3、ngx_http_autoindex_module

展示目录索引。
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
autoindex_format json;

四、Nginx状态监控模块

  • 在Nginx的插件模块中有一个模块stub_status可以监控Nginx的一些状态信息,默认安装可能没有这个模块,手动编译的时候加一下即可。

 1. 模块安装

先使用命令查看是否已经安装这个模块:

[root@ihxb123Z nginx]# ./nginx -V (V大写会显示版本号和模块等信息、v小写仅显
示版本信息。

如果已经安装,会在显示的信息中包含 --with-http_stub_status_module信息。如果没有此模块,需要重新安装,编译命令如下:

./configure –with-http_stub_status_module

  2. Nginx配置

安装后只要修改nginx配置即可,配置如下:

location /hxbcdnstatus {
            stub_status            on;
            access_log             off;
           allow 127.0.0.1;
            deny all;
            #auth_basic              "NginxStatus";
            #auth_basic_user_file  conf/nginxstaus;
}

  此处默认只有本地访问,如果远程可以查看需要加相关的IP或者干脆去掉Deny all即
可。加密文件可以使用#htpasswd -c /usr/nginx/conf hxb 命令来创建。配置完成后
需要重启Nginx服务。

  状态配置只能是针对某个Nginx服务。目前Nginx还无法做到针对单个站点进行监控。

 3. 状态查看

配置完成后在浏览器中输入http://127.0.0.1/hxbcdnstatus查看,显示信息如下:

Active connections: 100 
server accepts handled requests
 1075 1064 6253 
Reading: 0 Writing: 5 Waiting: 95 

4. 参数说明

 active connections – 活跃的连接数量

  server accepts handled requests — 总共处理了107520387个连接 , 成功创
建107497834次握手, 总共处理了639121056个请求

  每个连接有三种状态waiting、reading、writing

  reading —读取客户端的Header信息数.这个操作只是读取头部信息,读取完后马上
进入writing状态,因此时间很短。

  writing — 响应数据到客户端的Header信息数.这个操作不仅读取头部,还要等待
服务响应,因此时间比较长。

  waiting — 开启keep-alive后等候下一次请求指令的驻留连接.

  正常情况下waiting数量是比较多的,并不能说明性能差。反而如果
reading+writing数量比较多说明服务并发有问题。

image

五、Nginx访问连接控制模块

1、控制Nginx连接数

	1、安装ab测试命令
	yum install httpd-tools -y 

	2、ab 参数
		-n : 总共需要访问多少次
		-c : 每次访问多少个

[root@web01 conf.d]# cat game5.conf 
# limit_req_zone $remote_addr zone=one:10m rate=1r/s;
limit_conn_zone $remote_addr zone=addr:10m;
server {
    listen 80;
    server_name 192.168.15.7;
    # limit_req zone=one burst=5;
    limit_conn addr 1;
    location / {
        root /opt/Super_Marie;
	index index.html;
    }
}

2、控制Nginx访问量

	1、连接池
		limit_req_zone $remote_addr zone=one:10m rate=1r/s;
		声明连接池       变量          名称  连接池的大小  速率
	2、限制数

案例1:要求每秒只能有一个访问。
[root@web01 conf.d]# cat game5.conf 
limit_req_zone $remote_addr zone=one:10m rate=1r/s;
server {
    listen 80;
    server_name 192.168.15.7;
    limit_req zone=one burst=5;
    location / {
        root /opt/Super_Marie;
	index index.html;
    }
}

image

posted on 2022-01-04 17:10  耿蜀黍  阅读(362)  评论(0编辑  收藏  举报