nginx(二)—— nginx编译安装 及 配置Web服务访问控制

文章目录

    • 前言:
    • 一:nginx配置
      • 1.1-配置环境准备
      • 1.2-安装解压依赖包
      • 1.3、制作管理脚本
      • 1.4.配置文件nginx.conf
      • 1.5、配置DNS域名解析
    • 二、访问控制
      • 2.1、基于授权的访问控制

前言:

在前一篇《nginx基础介绍》中,我们对nginx有了一个基本的认识:包括应用场景、nginx基本架构、功能特性等,我们知道nginx应用比较多的场景是WEB服务器和反向代理服务器。

下面将先进行nginx编译安装,然后再进行nginx的WEB服务相关的应用配置:包括设置配置文件vim下语法高亮显示、配置虚拟主机、基于IP的访问控制、基于用户认证的访问控制、建立下载站点下载列表、URL地址重写/重定向、防盗链、提供Nginx状态页面、配置gzip压缩、日志、基于SSL提供https服务等。

一:nginx配置

1.1-配置环境准备

需要准备的安装包:

可以先通过远程挂载的方式将压缩包从Windows系统,挂载到linux系统,之后再进行压缩等操作。

百度云盘链接:Nginx安装包

WEB服务器 Client端
主机系统:CentOS 7 一般浏览器
IP:20.0.0.70 IP:192.168.1.169

1.2-安装解压依赖包

1. 安装依赖包

yum -y install gcc gcc-c++ make pcre-devel zlib-devel   

#nginx 的配置及运行需要pcre,zlib 等软件包的支持,因此需要预先安装这些软件的开发包(devel),以便提供相应的库和头文件

2、创建名为nginx的用户,且不允许登录系统

useradd -M -s /sbin/nologin nginx

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

3、解压安装包到指定/opt/中

tar zxvf nginx-1.12.2.tar.gz -C /opt/ 
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \   #安装目录
--user=nginx \                #运行用户
--group=nginx \               #运行组
--with-http_stub_status_module #启用统计模块,便于查看服务器连接信息

4、make编译

make && make install

5、关闭防火墙,优化路径

systemctl stop firewalld
setenforce 0

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第1张图片
6、检查配置文件

# 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
  • 与Apache的主程序httpd类似,nginx的主程序也提供了“-t”选项来对配置文件进行检查,配置文件nginx.conf默认位于安装目录下的conf/子目录中。若要检查位于其他位置的配置文件,可使用“-c”来指定路径。

7、安装 elinks 安装包,用elinks测试
启动nginx

yum -y install elinks
elinks http://localhost

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第2张图片

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第3张图片

nginx //启动
killall -1 nginx //重启
killall -3 nginx //停止

1.3、制作管理脚本

1、制作管理脚本,来控制 Nginx 的开启关闭。

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"
case "$1" in
   start)
   $PROG
   ;;
   stop)
   kill -s QUIT $(cat $PIDF)
   ;;
   restart)
   $0 stop
   $0 start
   ;;
   reload)
   kill -s HUP $(cat $PIDF)
   ;;
   *)
       echo "Usage: $0 {start|stop|restart|reload}"
       exit 1
esac
exit 0

2、添加执行权限,将脚本文件添加到服务列表中

cd /etc/init.d
chmod +x nginx
chkconfig --add nginx
chkconfig --level 35 nginx on  //开机自启
service nginx start
//启动不行,就先service nginx stop,再service nginx start

[root@localhost init.d]# netstat -natp | grep nginx

在这里插入图片描述

1.4.配置文件nginx.conf

  • 在 Nginx 服务器的主配置文件 /usr/local/nginx/conf/nginx.conf 中,包括全局配置,I/O 事件配置,HTTP 配置 中三大块内容。

    • 1、全局配置
      由各种配置语句组成,不使用特定的界标记,全局配置部分包括nginx服务的运行用户,工作进程数,错误日志,PID存放位置等基本设置
#user  nobody;                 //运行用户
worker_processes  1;           //工作运行数量 
#error_log  logs/error.log;    //错误日志文件的位置
#pid        logs/nginx.pid;    //PID文件的位置
  • 2、I/O 事件配置

    使用“svents{}”界定标记,用来指定nginx进程的I/O响应模型,每个进程的连接数等设置,对于2.6及以上的版本内核,建议使用epoll模型以提高性能,每个进程的连接数应根据实际需要来定,一般在10000一下,默认1024

events {
       use epoll;                      //使用epoll模型
       worker_connections  1024;      //每进程处理1024个连接
}
若工作进程数为8,每个进程处理4096个连接,则允许nginx正常提供的服务连接数已超过3万个,当然还要看服务器硬件,网络带宽等物理条件的性能表现
  • 3、HTTP 配置
    使用“http{}”界定标记,包括访问日志,HTTP端口,网页目录,默认字符集,连接保持,以及虚拟WEB主机,PHP解析等一系列设置,其中大部分配置语句都在子界定标记“server{}”内。
http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;   //访问日志位置

    sendfile        on;                  //支持文件发送(下载)
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;              //连接保持超时
    #gzip  on;

    server {   //web服务器的监听配置
        listen       80;               //监听端口
        server_name  localhost;        //域名

        #charset utf-8;         //网页的默认字符集  

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   html;
        }
  • 访问状态统计
    nginx内置了 HTTP_STUB_STATUS 状态统计模块,用来反馈当前的 Web 访问情况,配置编译参数时可添加 --with-http_stub_status_module 来启用此模块支持。
    可使用命令: /usr/local/nginx/sbin/nginx -V 来查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块。
    要使用 Nginx 的状态统计功能,除了启用内建模块以外,还需要修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置代码。

在nginx.conf 配置文件 只修改 server{}区域:

修改三处
server {
        listen       80;               //监听地址
        server_name  www.test.com;      //第一处:修改监听域名

        charset utf-8;   //第二处:修改字符集

        #access_log  logs/host.access.log;

        location / {
            root   html;
            index  index.html index.htm;
        }
        //增添一段location /status
        location /status {
            stub_status on;
            access_log off;
        }  
}

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第4张图片

修改好配置文件之后,重启一下服务即可。

service nginx stop
service nginx start

1.5、配置DNS域名解析

1、安装

yum -y install bind

2、修改

vim /etc/named.conf 

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第5张图片

vim /etc/named.rfc1912.zones 
//复制修改
zone "test.com" IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
};

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第6张图片

[root@server1 init.d]# cd /var/named/
[root@server1 named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@server1 named]# cp -p named.localhost test.com.zone
[root@server1 named]# vim test.com.zone 

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第7张图片
启动named服务

systemctl restart named

在一台 win10系统的客户端中
修改DNS服务器的地址
nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第8张图片
nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第9张图片
在win10的浏览器中输入 www.test.com
nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第10张图片

二、访问控制

2.1、基于授权的访问控制

Nginx 和Apache 一样,可以实现基于用于授权的访问控制,当客户端想访问网站时,会要求输入用户名和密码才可以正常访问,配置步骤和 Apache 基本一致。

基于授权的访问控制配置思路:

  • 生成用户密码认证文件
  • 修改主配置文件对相应目录,添加认证配置项
  • 重启服务,访问测试

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

auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第11张图片
2、安装tools软件包

yum install httpd-tools -y 

htpasswd 命令生成用户认证文件

htpasswd -c /usr/local/nginx/passwd.db test01

nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第12张图片
3、修改配置文件,就必须重启服务

service nginx restart

4、这时,用win10的浏览器访问网址www.test.com,就会要求输入用户名 test01 和密码123123
nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第13张图片
2.2、基于客户端的访问控制
可以通过客户端的 IP地址,决定是否允许对页面访问,规则如下:

  • deny ip/ip段 :拒绝某个ip或IP段访问;
  • allow ip/ip段 :允许某个ip或IP段访问;
  • 规则:从上往下,如匹配则停止,不再往下匹配
    我的win10主机 IP地址为 192.168.1.169
    配置过程:
    1、修改主配置文件 nginx.conf ,添加相应认证配置项。
    deny 192.168.1.169;
    allow all;
    //不允许192.168.1.169 这个ip的客户端访问
    nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第14张图片
    2、修改配置文件,就必须重启服务

service nginx restart

3、在win10系统中验证
nginx(二)—— nginx编译安装 及 配置Web服务访问控制_第15张图片

你可能感兴趣的:(nginx)