Nginx网站服务与虚拟Web主机(域名、IP、端口)

一、Nginx概述

1.什么是Lginx

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

优点:

  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发(同时访问我)连接的处理能力高
    • 单台物理服务器可支持30 000——50 000个并发请求

2.Nginx工作原理

  • Nginx由内核和模块组成
  • Nginx本身做的工作实际很少,当它接到HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者

3.Nginx 的模块从功能上分为如下三类

  • handler(处理器)模块:负责处理请求,完成响应内容的生成
  • filter(过滤器)模块:filter模块是对响应内容进行处理
  • proxies(代理类)模块:此类模块是Nginx的HTTP Upstream之类的模块
    这些模块主要与后端一些服务比如FastCGI(动态网页请求)等进行交互,实现服务代理和负载均衡等功能

4.Nginx的模块从结构上分为核心模块、基础模块和第三方模块

  • 核心模块:HTTP(网页)模块、EVENT(事件)模块和MAIL(邮件)模块;
  • 基础模块:HTTP Access(访问)模块、HTTP FastCGI(动态网页请求)模块、HTTP Proxy(代理)模块和HTTP Rewrite(重写)模块
  • 第三方模块:HTTP Upstream Request Hash (动态池)模块、Notice(注意)模块和HTTP Access Key模块;

二、搭建Nginx虚拟Web主机

1.搭建Nginx服务

1.1 准备安装包,用XShell文件传输到根目录
在这里插入图片描述
1.2 关闭防火墙,防止开启自启动

systemctl  stop   firewalld
setenforce  0
systemctl  disable  firewalld

[root@server1 ~]#  sed -i '/SELINUX/s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@server1 ~]# grep -v "#" /etc/selinux/config

1.3 安装依赖包

[root@server1 ~]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \            #是perl语言的正则表达式
zlib-devel \             #软件包的开发包,一个函数库,库里面包括头文件、静态库甚至源码等资源

1.4 创建一个不可登陆用户

[root@server1 ~]# useradd -M -s /sbin/nologin nginx

1.5 解压nginx软件包

[root@server1 ~]# tar zxvf nginx-1.12.2.tar.gz 

1.6 配置nginx

[root@server1 ~]# cd nginx-1.12.2/
[root@server1 nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \ 
--user=nginx \                       #指定其运行时的账户与组
--group=nginx \
--with-http_stub_status_module    #将状态模块启用

1.7 编译安装

make   &&   make   install   

1.8 建立软链接,检查语法

[root@server1 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/     #软链接
[root@server1 nginx-1.12.2]# nginx -t      #检查语法
[root@server1 nginx-1.12.2]# nginx            #重启服务
[root@server1 nginx-1.12.2]# netstat -anpt | grep nginx   #查看服务端口状态
[root@server1 nginx-1.12.2]# killall -1 nginx     #安全重启
[root@server1 nginx-1.12.2]# killall -3 nginx     #停止服务

做到这里Nginx环境已经部署好了

2.管理Nginx服务

1.制作管理脚本

vi  /etc/init.d/nginx

#!/bin/bash
#chkconfig:35 76 21
#description:Nginx Service Control
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.给脚本文件授权、设置chkconfig管理nginx服务

[root@server1 ~]# chmod +x /etc/init.d/nginx
[root@server1 ~]# chkconfig --add nginx
[root@server1 ~]# chkconfig --list

在这里插入图片描述
3.配置日志级别

[root@server1 ~]# ln -s /usr/local/nginx/conf/nginx.conf /etc/  #软链接
[root@server1 ~]# vi /etc/nginx.conf 
[root@server1 ~]# nginx -t
[root@server1 ~]# ulimit -n
[root@server1 ~]# ulimit -n 65535 >> /etc/rc.local 
[root@server1 ~]# ulimit -n

会遇到资源数不够需要添加资源数
在这里插入图片描述
vi /etc/nginx.conf 修改配置文件
在这里插入图片描述
在这里插入图片描述

4.配置统计功能

vi   /etc/nginx.conf
systemctl  stop   nginx
systemctl  start   nginx

添加:
  location ~ /status {
    
    
      stub_status on;
      access_log off;
}

在这里插入图片描述

5.查看nginx status(状态)详细
访问本机20.0.0.14/status
在这里插入图片描述
在这里插入图片描述

3.配置nginx的验证功能

[root@server2 ~]# vi /usr/local/nginx/conf/nginx.conf
[root@server2 ~]# nginx -t
[root@server2 ~]# systemctl stop nginx
[root@server2 ~]# systemctl start nginx

添加:
 location / {
    
              
                deny 20.0.0.1/32;                    #拒绝20.0.0.1访问     
                allow all;                                  #允许所有访问
                auth_basic "secret";             #密文认证
                auth_basic_user_file /usr/local/nginx/passwd.db;   #用户文件指向usr/local/nginx/passwd.db
        }

在这里插入图片描述
测试:
因为nginx的执行顺序是从上到下不像apache一样,把拒绝的放前面就直接执行拒绝访问
在这里插入图片描述

三、配置虚拟主机功能

1.基于域名

[root@server2 ~]# vi /etc/nginx.conf 
[root@server2 ~]# systemctl stop nginx
[root@server2 ~]# systemctl start nginx

添加:
server {
    
    
        listen       80;
        server_name  www.nb.com;
        charset utf-8;
        access_log  logs/nb.com.access.log;
        location / {
    
    
            root   /var/www/html/nb; 
            index  index.html index.htm;
       }
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
    
    
         root   html;
       }

   }
  }

在这里插入图片描述
在这里插入图片描述
编写页面

[root@server1 ~]# mkdir -p /var/www/fa
[root@server1 ~]# mkdir -p /var/www/nb
[root@server1 ~]# echo "<h1>This is fa.</h1>" > /var/www/fa/index.html
[root@server1 ~]# echo "<h1>This is nb.</h1>" > /var/www/nb/index.html
[root@server1 ~]# vi /etc/hosts
[root@server1 ~]# curl http://www.fa.com
<h1>This is fa.</h1>
[root@server1 ~]# curl http://www.nb.com
<h1>This is nb.</h1>

在这里插入图片描述
测试用域名访问
www.fa.com
www.nb.com
在这里插入图片描述
在这里插入图片描述

2.基于IP

1.创建虚拟主机

[root@server1 ~]# ifconfig ens33:1 192.168.1.100/24
[root@server1 ~]# ifconfig

在这里插入图片描述

[root@server1 ~]# vi /etc/nginx.conf 
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
[root@server1 ~]# curl http://20.0.0.13
<h1>This is fa.</h1>
[root@server1 ~]# curl http://192.168.1.100
<h1>This is nb.</h1>

在这里插入图片描述
在这里插入图片描述

测试:
20.0.0.13
192.168.1.100
在这里插入图片描述
在这里插入图片描述

3.基于端口

[root@server1 ~]# vi /etc/nginx.conf 
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
[root@server1 ~]# netstat -anpt | grep nginx
[root@server1 ~]# curl http://20.0.0.13:80
<h1>This is fa.</h1>
[root@server1 ~]# curl http://192.168.1.100:8080
<h1>This is nb.</h1>

在这里插入图片描述
在这里插入图片描述

测试:
20.0.0.13:80
192.168.1.100:8080
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/F2001523/article/details/110387551