文章目录

  • 前言
  • 一:Nginx服务基础
    • 1.1:Nginx概述
    • 1.2:Nginx编译安装(过程)
    • 1.3:运行控制(实验过程)
    • 1.4:配置文件nginx.conf
    • 1.5:Nginx的访问状态统计(实验过程)
  • 二:Nginx访问控制
    • 2.1:基于授权的访问控制
    • 2.2:基于客户端的访问控制
  • 三:Nginx虚拟主机
    • 3.1:Nginx虚拟主机应用
    • 3.2:基于域名的虚拟Web主机
    • 3.3:基于端口的虚拟web主机
    • 3.4:基于IP的虚拟web主机

前言

  • 在各种网站服务器软件中,除了Apache HTTP Server外,还有一款轻量级的HTTP服务器软件–Nginx,其稳定,高效的特性逐渐被越来越多的用户认可
  • 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
  • 其特点是:占有内存少,并发能力强
  • 中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

一:Nginx服务基础

1.1:Nginx概述

  • 一款高性能、轻量级Web服务软件

    ●稳定性高

    ●系统资源消耗低

    ●对HTTP并发连接的处理能力高

    ●单台物理服务器可支持30 000 ~ 50000个并发请求

    ●占用内存少,并发能力强

1.2:Nginx编译安装(过程)

  • 安装支持软件

    [root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
  • 创建运行用户、组

    [root@localhost ~]# useradd -M -S /sbin/nologin nginx  '//-M 不创建家目录'
  • 编译安装Nginx

  • 先mount.cifs挂载宿主机中的nginx软件包文件夹
    [root@localhost ~]# tar zxvf nginx-1.12.2.tar.gz
    [root@localhost ~]# cd nginx-1.12.0
    [root@localhost nginx-1.12.0]# ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_ status_ module    '//开启stub_status状态统计模块'
    [root@localhost nginx-1.12.0]# make && make install
    [root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin  '//nginx命令执行路径优化'
    [root@locaThost nginx-1.12.0]# ls -l /usr/local/sbin/nginx
    Irwxrwxrwx 1root root27 5月16 16:50 /usr/local/sbin/nginx ->/usr/local/nginx/sbin/nginx
    

1.3:运行控制(实验过程)

  • 检查配置文件

    [root@localhost ~]# nginx -t '//检查'
    
  • 启动、重载配置、停止Nginx

    [root@localhost ~]# nginx    '//启动'
    [root@localhost ~]# netstat -anpt | grep nginx
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7180/nginx: master
    [root@localhost ~]# yum -y install elinks
    [root@localhost ~]# elinks http://localhost        '//显示"Welcome to nginx!"页面,表明Nginx服务已经正常运行'
    [root@localhost ~]# killall -s HUP nginx   '//-S选项指定信号种类,HUP信号表示重载配置'
    [root@localhost ~]# killall -s QUIT nginx  '//QUIT信号表示退出进程'
    
  • Nginx添加为系统服务

  • 第一种方法,使用systemctl工具进行管理

  • [root@localhost ~]# vim /lib/systemd/system/nginx.service     '//添加使用systemctl工具进行管理'
    [Unit]
    Description=nginx  '//描述'
    After=network.target   '//描述服务类别'[Service]
    Type=forking   '//后台运行形势'
    PIDFile =/usr/local/nginx/logs/nginx.pid   '//PID文件位置'
    ExecStart=/usr/local/nginx/sbin/nginx      '//启动服务'
    ExecReload=/usr/bin/kill -S HUP $MAINPID   '//根据PID重载配置'
    ExecStop=/usr/bin/kill -S QUIT $MAINPID        '//根据PID终止进程'
    PrivateTmp=true[Install]
    WantedBy=multi-user.target
    [root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
    

    第二种方法,添加使用service工具进行管理

    [root@localhost ~]# cd /etc/inid.d      '//或者添加使用service工具进行管理'
    [root@localhost init.d]# ls
    [root@localhost init.d]# vim 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" instart)$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
    [root@localhost init.d]# chmod +x nginx
    [root@localhost init.d]# chkconfig --add nginx
    [root@localhost init.d]# chkconfig --level 35 nginx on
    
  • 此时,开启服务,关闭防火墙,就可以访问nginx网址了

    [root@localhost init.d]# service nginx start
    [root@localhost init.d]# systemctl stop firewalld
    [root@localhost init.d]# setenforce 0
    [root@localhost init.d]# netstat -ntap | grep nginx
    

1.4:配置文件nginx.conf

  • 全局配置

    #user nobody;
    worker_ processes 1;
    #error_ log logs/error.log;
    #pid logs/nginx.pid;
  • 1/O时间配置

    events {use epoll;worker connections 4096;
    }
    
  • HTTP配置

    http {....access_log logs/access.log main;sendfile on;...keepalive_ _timeout 65;server {listen  80;server name localhost;charset utf-8;location / {root html;index index.html index.php; }error_ page 500 502 503 504 /50x.html;location = /50x.html {root html; }}
    }

1.5:Nginx的访问状态统计(实验过程)

  • 启用HTTP_ STUB_ STATUS状态统计模块

    配置编译参数时添加–with-http stub status module

    nginx -V查看已安装的Nginx是否包含HTTP_ STUB _STATUS模块

    [root@localhost ~]# nginx -V
    nginx version: nginx/1.12.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
    configure arguments: --prefix=/usr/local/nginx --user=nginx --
    group= nginx --with-http_ stub_ status_ module
    
  • 修改nginx.conf配置文件

    [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    http{server {listen 80;server name localhost;charset utf-8;location / {root html;index index.html index.php;}location ~/status {        '//添加此段'stub_ status on;access_ log off;}}
    }
    
  • 查看当前的状态统计信息

二:Nginx访问控制

2.1:基于授权的访问控制

  • 配置步骤与Apache基本一致

    ●生成用户密码认证文件

    ●修改主配置文件对相应目录,添加认证配置项

    ●重启服务,访问测试

  • 生成用户密码认证文件

    [root@localhost ~]# yum install -y httpd-tools    '//因为没有htpasswd工具,所以需要安装'
    [root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db test
    New password:
    Re-type new password:
    Adding password for user test
    root@localhost ~]# cat /usr/local/nginx/ passwd.db
    test:$apr1$x.UaSXIM$RRLa2KJcKwsGBVsikGcrR/
    
  • 修改主配置文件对相应目录,添加认证配置项

    [root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db
    [root@localhost ~]# chown nginx /usr/local/nginx/passwd.db
    [root@localhost ~]# ll -d /usr/local/nginx/passwd.db
    -r------- 1 nginx root43 5月16 22:26
    /usr/local/nginx/passwd.db
  • 重启服务,访问测试

    [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    server {location / {auth_basic "secret";auth_basic_user_file /usr/local/nginx/passwd.db;}
    
  • 此时访问网页会要求输入账号密码

2.2:基于客户端的访问控制

  • 通过客户端IP地址,决定是否允许对页面访问

  • 配置规则

    deny IP/IP段:拒绝某个IP或IP段的客户端访问

    allow IP/IP段:允许某个IP或IP段的客户端访问

    规则从上往下执行,如匹配则停止,不再往下匹配

  • 配置步骤

    • 修改主配置文件nginx.conf,添加相应配置项

      除主机192.168.195.128之外允许其他客户端访问

      [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
      server {location/ {deny 192.168.195.128;allow all; }
    • 访问测试,会报错403

三:Nginx虚拟主机

3.1:Nginx虚拟主机应用

  • Nginx支持的虚拟主机有三种

    ●基于域名的虚拟主机

    ●基于IP的虚拟主机

    ●基于端口的虚拟主机

  • 通过"server{}" 配置段实现

3.2:基于域名的虚拟Web主机

  • 配置步骤

    ●准备网站目录及测试文件

    [root@localhost ~]# mkdir -p /var/www/html/erbao/
    [root@localhost ~]# mkdir -p /var/www/html/sanbao/
    [root@localhost ~]# echo "this is erbao" >>
    /var/www/html/erbao/index.html
    [root@localhost ~]# echo "this is sanbao" >>
    /var/www/html/sanbao/index.html
    [root@localhost ~]# yum install bind -y        '//以下是配置DNS服务过程,具体内容不再赘述,如果不懂,翻阅我之前博客'
    [root@localhost ~]# vim  /etc/named.conf
    [root@localhost ~]# vim /etc/named.rfc1912.zones
    [root@localhost ~]# cp -p /var/named/named.localhost /var/named/erbao.com.zone
    [root@localhost ~]# vim /var/named/erbao.com.zone
    [root@localhost ~]# cp -p /var/named/erbao.com.zone /var/named/sanbao.com.zone
    [root@localhost ~]# systemctl start named
    

    ●调整nginx.conf配置文件

    server {listen  80;server name www.erbao.com;charset utf-8;access_log logs/www.erbao.access.log;location/ {root /var/www/html/btcom;......
    }
    
  • 这个简单,和通过域名访问即可

3.3:基于端口的虚拟web主机

  • 配置步骤

    修改配置文件

    [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    server {listen  192.168.9.158:6666;server name 192.1 68.9.1 58:6666;......}
    server {listen  192.1 68.9.158:8888;server name 192.1 68.9.158:8888;......}
    

3.4:基于IP的虚拟web主机

  • 配置步骤

    主机配置两个IP地址

    修改配置文件

    [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    server {listen  192.168.9.1 58:80;server name 192.168.9.158:80;....}
    server {listen  192.168.9.1 10:80;server name 192.168.9.110:80;....}
    

ver {
listen 192.1 68.9.158:8888;
server name 192.1 68.9.158:8888;
…}

### 3.4:基于IP的虚拟web主机- 配置步骤主机配置两个IP地址修改配置文件```css
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {listen  192.168.9.1 58:80;server name 192.168.9.158:80;....}
server {listen  192.168.9.1 10:80;server name 192.168.9.110:80;....}

Nginx优化之虚拟主机相关推荐

  1. Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置

    Nginx多站点虚拟主机实现单独启动停止php-fpm.单独控制权限设置 来源:osyunwei.com 作者:qihang01 发表于:2012-08-19 21:26 点击: 说明: 站点1:bb ...

  2. Nginx运行控制虚拟主机和访问控制

    目录 一.Nginx服务概述 二.Nginx安装 三.Nginx的运行控制 四.配置文件nginx.conf 1.全局配置 2.I/O事件配置 3.HTTP配置 4.访问状态统计 五.Nginx访问控 ...

  3. Nginx实现多虚拟主机配置

    一.Nginx的应用概述 Nginx作为一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.主要有以下3方面的应用: 1.http服务器 Nginx是一个http服 ...

  4. Nginx安装与虚拟主机配置shell脚本

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Nginx安装与虚拟主机配置shell脚本. 一.NGINX安装 在今天的脚本上,我们开始尝试使用函数和参数,以增强脚本的灵活性和实现脚本的模块 ...

  5. centos 6.5 下 nginx 简单优化_虚拟主机_负载均衡

    # 用了nginx for win很久,安装也是超级简单. # 还是用一下linux版的吧.环境是centos 6.5 x64 # 安装开始: # 先安装依赖 yum install gcc-c++ ...

  6. 通过ngx-lua来统计Nginx上的虚拟主机性能数据

    Web server调研分析 Filed under: Web Server - cmpan @ 2012-10-29 20:38:34 摘要 简单可依赖的架构首先需要有一个简单可依赖的前端WebSe ...

  7. Nginx如何配置虚拟主机?

    注意,该环境是依赖于http://www.php20.com/forum.php?m ... &extra=page%3D1 基础上进行配置.默认不具备这些文件 . 下面是增加一个mytest ...

  8. nginx介绍(三) - 虚拟主机

    前言 前面提到过, 由nginx来分发请求到tomcat中, 那么怎么来区分这些tomcat呢? 我们一般访问网站的时候, 是不是可以使用 ip : port (127.0.0.1:8080)的方式来 ...

  9. 12.6-12.9 Nginx安装,默认虚拟主机,用户认证,域名重定向

    12.6 Nginx安装 大纲 1 进入src目录,把nginx下载在此目录 #cd  /usr/local/src #wget http://nginx.org/download/nginx-1.8 ...

最新文章

  1. 【Groovy】编译时元编程 ( 编译 ASTTransformation | 打包 ASTTransformation 字节码文件 | 编译 Groovy 类同进行编译时处理 )
  2. springboot启动没反应_新特性:Tomcat和Jetty如何处理Spring Boot应用?
  3. 全面解析python类的绑定方法与非绑定方法(转载+自己的消化与理解)
  4. python linux编程与window编程_Python3如何在Windows和Linux上打包
  5. ATC空管系统的实时控制软件系统分析
  6. 用 SQL 脚本读取Excel 中的sheet数量及名称
  7. C#编程(二十三)----------实现继承
  8. matlab求两点的距离,matlab求两点间距离
  9. Android三大动画介绍及使用
  10. vs调试nuget包_NuGet包调试源码的方法
  11. 大数据的预测实力,这15个有趣的数据集,你可能闻所未闻
  12. html新建框架网页,html怎么做网页框架
  13. 关于python安装问题 0x80072f7d的解决方法
  14. MOS管的输入阻抗很大带来的问题
  15. 景观生态学原理| 2 景观生态学的理论与核心
  16. STM32F103驱动SDIO wifi Marvell8801/Marvell88w8801 介绍(十一) ---- 编写LWIP DHCP server
  17. Revit开发之创建了一个基于标高的曲线结构梁
  18. 【信奥赛一本通】1184:明明的随机数(详细代码)
  19. (GPT3)Language Models are Few-Shot Learners论文阅读
  20. 第六个实验 rs485实验

热门文章

  1. 自用大智慧策略高端版本
  2. Unity 水体浮力的实现
  3. 3D Human相关研究:人体、姿态估计、人体重建等
  4. 安卓前端车牌识别技术
  5. 搜狗输入法这次栽大了!
  6. 汽修第5天 升降玻璃的维修
  7. DTI | Drug-target interaction | 基础知识
  8. linux硬件之磁盘运行读写原理
  9. rknn3399pro 2小时入门指南(八)详细教程指导你一步到位训练得到yolov3 rknn模型
  10. 方舟服务器掉线就无响应,方舟适者生存闪退重启解决方法 怎么连接进入服务器?...