原文:https://blog.51cto.com/11134648/2130987

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

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

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

2. 创建运行用户、组

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

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

3. 编译安装

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

根据实际需要配置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 //编译安装

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

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

    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

    第二步检查配置文件并启动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

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服务

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
[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

第三步确认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浏览器

  • 配置访问状态统计页面

    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 //过滤配置文件#号注释的信息
[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;
} }
}

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

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


其中,“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软件包
    [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/

(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

(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;
}

(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

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


需要输入用户名和密码进行访问,验证通过才能进行访问。

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;
}

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

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



要注意的是如果是用域名访问网页,需要配置DNS域名解析服务器,详细步骤参考使用Bind部署DNS域名解析服务器之正向解析

部署Nginx网站服务实现访问状态统计以及访问控制功能的更多相关文章

  1. 部署Nginx网站服务

    编译安装Nginx nginx 官方 : http://nginx.org/ yum -y install pcre-devel zlib-devel   ##安装相关依赖包 ./configure ...

  2. Nginx网站服务

    1.常见的网站服务 静态网站服务: Apache服务 nginx服务 动态网站服务: Tomcat服务 PHP 2.nginx网站服务特点 (1)nginx具有高并发(特别是静态资源).占用系统资源少 ...

  3. Nginx网站服务 配置

    Nginx网站服务 配置 1.编译安装Nginx服务 2.认识Nginx服务的主配置文件nginx.conf 3.访问状态统计配置 4.基于授权的访问控制 5.基于客户端的访问控制 6.基于域名的Ng ...

  4. Nginx 流量带宽等请求状态统计( ngx_req_status)

    Nginx 流量带宽等请求状态统计 ( ngx_req_status)  插件下载地址: wget http://nginx.org/download/nginx-1.4.2.tar.gz git c ...

  5. 八.nginx网站服务实践应用

    期中集群架构-第八章-期中架构nginx章节====================================================================== 01. web ...

  6. CentOS7 实战源码部署nginx网站服务器

    简介:实战演练nginx网站服务器的搭建 nginx 简介: Nginx是一款高性能的 HTTP 和反向代理服务器   Nginx的优点: 1.高并发量:根据官方给出的数据,能够支持高达 50,000 ...

  7. nginx流量带宽等请求状态统计( ngx_req_status)

    介绍 ngx_req_status用来展示nginx请求状态信息,类似于apache的status,nginx自带的模块只能显示连接数等等信息,我们并不能知道到底有哪些请求.以及各url域名所消耗的带 ...

  8. Docker学习笔记 - Docker部署nginx网站

    一.制作 nginx 镜像 1.下载配置文件 mkdir /opt/nginx_docker && cd /opt/nginx_docker mkdir nginx && ...

  9. IIS部署WCF网站服务步骤

    一开始在“管理工具”下找不到IIS的快捷方式,是因为系统默认未打开IIS功能,所以首先打开IIS功能: 为避免出现未知的麻烦,建议将IIS下的所有项都勾上: 创建IIS桌面快捷方式: 添加网站托管: ...

随机推荐

  1. [转]jkeyll的安装步骤

    链接地址:https://nxjniexiao.github.io/2018/08/17/jkeyll-install/

  2. golang实现无限级菜单(beego框架下)

    原文地址  http://www.niu12.com/article/37 golang实现无限级菜单(beego框架下) 数据表如下 -- ---------------------------- ...

  3. SpringBoot里自定义banner

    国外有一个专门用来生成banner的网址:http://patorjk.com/software/taag ,打开这个网址,生成你想要的字儿. 生成时,我们可以选择自己喜欢的字体等信息. 完成后,选择 ...

  4. 原生xgboost中如何输出feature_importance

    网上教程基本都是清一色的使用sklearn版本,此时的XGBClassifier有自带属性feature_importances_,而特征名称可以通过model._Booster.feature_na ...

  5. bam文件格式说明

    bam文件说明 bam文件和sam文件内容其实是一样的,只是bam是二进制的压缩文件,需要通过特定的软件来进行查看,bam文件通常可以理解为12个字段组成 BAM格式分为header section( ...

  6. Properties类使用详解

    Java Properties类使用详解   概述 Properties 继承于 Hashtable.表示一个持久的属性集,属性列表以key-value的形式存在,key和value都是字符串. Pr ...

  7. Http 请求到后端过程

    描述下网页一个 Http 请求,到后端的整个请求过程 评注:基础题,感觉属于常识题!必会! 回答: 利用DNS进行域名解析 -------> 发起TCP的3次握手 --------> 建立 ...

  8. 修改Linux服务器中的MySql密码

    1.可以直接在数据库中修改,因为知道root密码,所以直接登录 mysql -uroot -p 2.查看一下数据库,修改root密码需要使用如下图所示的mysql数据库 3.通过use mysql指明 ...

  9. JWT知识整理

    JSON Web Token:(https://jwt.io/) JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-co ...

  10. IDEA创建web项目详细过程

    相关软件:Intellij Idea2017.jdk16.tomcat Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统 ...