首页 > 系统相关 >部署Nginx网站服务实现访问状态统计以及访问控制功能

部署Nginx网站服务实现访问状态统计以及访问控制功能

时间:2023-09-21 09:22:23浏览次数:64  
标签:nginx 访问控制 访问 centos7 Nginx usr conf root

部署Nginx网站服务实现访问状态统计以及访问控制功能

 精选 原创

小樱桃Cherry2018-06-20 16:13:53博主文章分类:web服务及群集©著作权

文章标签Nginx状态统计访问控制文章分类运维阅读数8135

Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物理服务器可支持30000-50000个并发请求。

Nginx的安装文件可以从官方网站http://www.nginx.org/下载,下面以Nginx1.12版本为例,基于CentOS7,部署Nginx网站服务。

  • 安装Nginx

第一步源码编译安装

1. 安装支持软件

Nginx的配置及运行需要gcc 、 gcc-c++ 、 make 、 pcre、pcre-devel、zlib-devel软件包的支持,以便提供相应的库和头文件,确保Nginx安装顺利。

创建yum仓库的步骤详细步骤请参考  Linux下通过rdesktop远程登陆Windows系统

yum install gcc gcc-c++ make pcre pcre-devel zlib-devel -y
  • 1.
 

如果是在有网络的情况下,CentOS7无需创建yum仓库,直接执行yum list命令更新一下yum源,稍微等待一会儿。

yum list    //更新yum源
yum install gcc gcc-c++ make pcre pcre-devel zlib-devel -y
  • 1.
  • 2.
 

2. 创建运行用户、组

Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制其访问权限,增加灵活性,降低安全风险。

useradd -M -s /sbin/nologin nginx    //创建一个名为nginx用户,不建立宿主文件夹,禁止登录到shell环境
  • 1.
 

3. 编译安装

tar xzvf nginx-1.12.0.tar.gz -C /opt  //解压Nginx软件至opt目录下
  • 1.
 
cd /opt/nginx-1.12.0/  //切换到Nginx目录下
  • 1.
 

根据实际需要配置Nginx的具体选项,配置前可参考“./configure --help”给出的说明。

./configure \
–prefix=/usr/local/nginx \
–user=nginx
–group=nginx
–with-http_stub_status_module

  • –prefix:指定Nginx的安装目录
  • –user:指定Nginx的运行用户
  • –group:指定Nginx的运行组
  • –with-http_stub_status_module:启用http_stub_status_module模块以支持状态统计,便于查看服务器的连接信息
make                //生成二进制文件
make install        //编译安装
  • 1.
  • 2.
 

4. 为主程序Nginx创建链接文件

创建Nginx主程序的链接文件是为了方便管理员直接“nginx”命令就可以调用Nginx的主程序。

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
  • 1.
 

第二步检查配置文件并启动Nginx服务

1.检查配置文件

Nginx的主程序提供了“-t”选项来对配置文件进行检查,以便找出不当或错误的配置。

[root@centos7-1 nginx-1.12.0]# 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
  • 1.
  • 2.
  • 3.
 

2.启动Nginx

直接运行Nginx即可启动Nginx服务器

[root@centos7-1 nginx-1.12.0]# nginx 
[root@centos7-1 nginx-1.12.0]# killall -1 nginx       //重启nginx服务
[root@centos7-1 nginx-1.12.0]# killall -3 nginx      //停止nginx服务
  • 1.
  • 2.
  • 3.
 

3.使用Nginx服务脚本

为了使nginx服务的启动、停止、重载等操作更加方便,可以编写nginx服务脚本,并使用chkconfig和systemctl工具来进行管理,这更加符合系统的管理习惯。

[root@centos7-1 nginx-1.12.0]# vim /etc/init.d/nginx

#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"               //主程序路径
PIDF="/usr/local/nginx/logs/nginx.pid"           //PID存放路径
case "$1" in
  start)
    $PROG
    ;;
  stop)
    kill -s QUIT $(cat $PIDF)              //根据PID中止nginx进程
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload)
    kill -s HUP $(cat $PIDF)              //根据进程号重载配置
    ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0
  • 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.
 
[root@centos7-1 nginx-1.12.0]# chmod +x /etc/init.d/nginx
[root@centos7-1 nginx-1.12.0]# chkconfig --add nginx                 //添加为系统服务
[root@centos7-1 nginx-1.12.0]# systemctl start nginx.service
  • 1.
  • 2.
  • 3.
 

第三步确认Nginx服务是否正常运行

通过检查Nginx程序的监听状态,或者在浏览器中访问此Web服务,默认页面将显示“Welcome to nginx!”

[root@centos7-1 nginx-1.12.0]# netstat -antp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      54386/nginx: master 
[root@centos7-1 nginx-1.12.0]# yum install elinks -y
[root@centos7-1 nginx-1.12.0]# elinks http://localhost //使用elinks浏览器
  • 1.
  • 2.
  • 3.
  • 4.
 

部署Nginx网站服务实现访问状态统计以及访问控制功能_访问控制

  • 配置访问状态统计页面

Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况。要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf配置文件,指定访问位置并添加stub_status配置代码。

[root@centos7-1 nginx-1.12.0]# cd /usr/local/nginx/conf
[root@centos7-1 conf]# mv nginx.conf nginx.conf.back
[root@centos7-1 conf]# grep -v "#" nginx.conf.back > nginx.conf     //过滤配置文件#号注释的信息
  • 1.
  • 2.
  • 3.
 
[root@centos7-1 conf]# vim nginx.conf

server {
        listen       80;
        server_name  localhost;
	charset utf-8;

        location / {
            root   html;
            index  index.html index.htm;
        }
			
      //在"server"这里插入的这4行的信息
        location ~ /status {                      //访问位置为/status
        stub_status   on;                        //打开状态统计功能
        access_log off;                          //关闭此位置的日志记录
        }	                 

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       }
    }
  • 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.
 

新的配置生效后,在浏览器中访问nginx服务器的/status网站位置,可以看到当前的状态统计信息。

systemctl reload nginx.service                  //重新加载nginx服务
systemctl stop firewalld.service               //关闭防火墙
systemctl disable firewalld.service         //禁用防火墙
  • 1.
  • 2.
  • 3.
 

部署Nginx网站服务实现访问状态统计以及访问控制功能_状态统计_02
其中,“Active connections”表示当前的活动连接数;而“server accepts handled requests”表示已经处理的连接信息。三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数。

  • 配置Nginx的访问控制

1.基于用户授权的访问控制

(1).使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与Apache认证时方式一样,在/usr/local/nginx/目录生成passwd.db文件,用户名是test,密码输入2次。

yum install httpd-tools -y    //安装httpd-tools软件包
  • 1.
 
[root@centos7-1 ~]# htpasswd -c /usr/local/nginx/passwd.db test
New password:                      //设置test用户密码
Re-type new password: 
Adding password for user test
[root@centos7-1 ~]# cat /usr/local/nginx/passwd.db         //查看生成的用户认证文件
test:$apr1$WfkC0IdB$sMyjqJzg2tcqcIe1mJ8LI/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
 

(2).修改密码文件的权限为400,将所有者改为nginx,设置nginx的运行用户能够读取。

[root@centos7-1 ~]# chmod 400 /usr/local/nginx/passwd.db 
[root@centos7-1 ~]# chown nginx /usr/local/nginx/passwd.db 
[root@centos7-1 ~]# ll -d /usr/local/nginx/passwd.db 
-r--------. 1 nginx root 43 6月  20 14:45 /usr/local/nginx/passwd.db
  • 1.
  • 2.
  • 3.
  • 4.
 

(3).修改主配置文件nginx.conf,添加相应认证配置项。

[root@centos7-1 ~]# vim /usr/local/nginx/conf/nginx.conf

location / {
            auth_basic "secret";       //添加认证配置
            auth_basic_user_file /usr/local/nginx/passwd.db;
            root   html;
            index  index.html index.htm;
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
 

(4).检测语法、重启服务

[root@centos7-1 ~]# 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@centos7-1 ~]# systemctl restart nginx.service
  • 1.
  • 2.
  • 3.
  • 4.
 

(5).用浏览器访问网址,检验控制效果。

部署Nginx网站服务实现访问状态统计以及访问控制功能_状态统计_03
需要输入用户名和密码进行访问,验证通过才能进行访问。
部署Nginx网站服务实现访问状态统计以及访问控制功能_状态统计_04

2.基于客户端的访问控制

Nginx基于客户端的访问控制要比Apache的简单,规则如下:

  • deny IP/IP段:拒绝某个IP或IP段的客户端访问
  • allow IP/IP段:允许某个IP或IP段的客户端访问。
  • 规则从上往下执行,如匹配规则停止,不在往下匹配。

(1).修改主配置文件nginx.conf,添加相应认证配置项。

[root@centos7-1 ~]# vim /usr/local/nginx/conf/nginx.conf

  location / {
            deny 192.168.113.132;          //客户端IP
            allow all;
            root   html;
            index  index.html index.htm;
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
 

deny 192.168.113.132表示这个ip地址访问会被拒绝,其他IP客户端正常访问。
(2).重启服务器访问网址,页面已经访问不到。

[root@centos7-1 ~]# systemctl restart nginx.service 
  • 1.
 

部署Nginx网站服务实现访问状态统计以及访问控制功能_访问控制_05
部署Nginx网站服务实现访问状态统计以及访问控制功能_Nginx_06
要注意的是如果是用域名访问网页,需要配置DNS域名解析服务器,详细步骤参考 使用Bind部署DNS域名解析服务器之正向解析

   
  • 打赏
  •  
  • 3赞
  •  
  • 收藏
  •  
  • 评论
  •    
  • 举报

上一篇:Nginx+Tomcat负载均衡集群

下一篇:LVS负载均衡之一:LVS-NAT、LVS-DR模式的原理详细介绍

  提问和评论都可以,用心的回复会被更多人看到评论   相关文章
  • nginx统计

标签:nginx,访问控制,访问,centos7,Nginx,usr,conf,root
From: https://www.cnblogs.com/cherishthepresent/p/17719090.html

相关文章

  • Nginx基于基本身份认证的文件服务
    Nginx基于基本身份认证的文件服务1、配置文件server{ listen80; server_namejili.kaikai.com; location/{root/opt/jili;autoindexon;charsetutf-8;auth_basic"authentication";auth_basic_us......
  • SHELL编程开发:如何轻松一键部署Nginx脚本
    实现思路下载Nginx源码包解压源码包进入解压后的目录配置编译选项编译并安装Nginx启动Nginx服务代码实现以下是脚本内容及注释:#!/bin/bash#一键部署Nginx脚本#下载Nginx源码包wgethttp://nginx.org/download/nginx-1.20.1.tar.gz#解压源码包tar-zxvfnginx-1.20.1.tar.......
  • 文件/目录的权限和归属 访问权限 读取:允许查看文件内容、显示目录列表 写入:允许修改
    文件/目录的权限和归属 访问权限读取:允许查看文件内容、显示目录列表写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录可执行:允许运行程序、切换目录归属(所有权)属主:拥有改文件或目录的用户账号属组:拥有该文件或目录的组账号,组中用户查看文件/目录的权限和归属......
  • Nginx第二天学习笔记
    在继续深入Nginx的学习之后,我对这个强大的Web服务器有了更深入的理解。以下是我对第二天学习的总结。一、Nginx的负载均衡Nginx的负载均衡功能是其核心特性之一,它可以轻松处理高并发的请求,使得Web应用能够应付大规模的访问。Nginx通过upstream模块来实现负载均衡,可以配置多个后端服......
  • c++ 访问全局变量
      #include<iostream>usingnamespacestd;inta{1};intmain(){inta{123};cout<<"外部的a:"<<a<<endl;//外部的a:123{cout<<"外部的a:"<<a<<endl;//外部的a:123......
  • 恒创科技:轻量型服务器能支撑多少人访问?
    一、服务器配置影响访问人数服务器的配置是影响轻量型服务器能够支撑的访问人数的关键因素之一。通常而言,轻量型服务器的配置普遍不高,适合小型团队或个人使用。如果服务器配置较低,那么支撑访问人数的能力也会受到限制。较为简单的应用程序对服务器性能要求不高,可以支持较......
  • nginx配置文件root 与 alias的区别
    假如服务器路径为:/home/imooc/files/img/face.pngroot路径完全匹配访问配置的时候为:location/imooc{ root/home}用户访问的时候请求为:url:port/imooc/files/img/face.pngalias可以为你的路径做一个别名,对用户透明配置的时候为:location/hello{ root/home/im......
  • 别人访问下载接口
    //post请求报文体的接收方式HttpContext.Current.Response.ContentType="application/json";HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.UTF8;System.IO.StreaminputStream=HttpContext.Current.Request.InputStream;System.Text.Encodi......
  • java代码访问网页
    importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.URL;importjava.net.HttpURLConnection;publicclassWebPageAccess{publicstaticvoidmain(String[]args){Stringurl="http://example.com";//输入要访......
  • windows下elasticsearch安装完无法访问9200的问题
    问题描述:windows系统下启动成功,但无法访问http://localhost:9200/系统环境:操作系统:WindowsServer2022DatacenterJDK版本:jdk-8u381-windows-x64.exeElasticsearch版本:elasticsearch-8.10.1-windows-x86_64.zip注:Elasticsearch最低要求JDK1.8,下载地址:https://www.elastic.co......