Nginx网站服务

目录

一、nginx概述

1、什么是nginx

特点

2、并发连接

3、nginx应用场景

4、nginx中http七层代理和四层代理

5、反向代理

定义

优点

二、nginx服务和apache区别

三、编译安装nginx服务

1、上传数据包(老版本)

2、关闭防火墙 

3、安装依赖包 

4、创建运行用户、组 

5、解压,配置软件模块

6、编译安装nginx 

7、优化配置文件路径,便于系统识别Nginx的操作命令

 8、添加Nginx系统服务

9、赋权,重启服务并设置开机自启 

10、验证服务

四、nginx平滑升级1.12到1.20 

1、上传软件包

2、关闭nginx进程

3、配置软件模块

4、编译,不安装

5、备份旧版本,用新版本覆盖过去

6、启动服务并检测版本

7、对结果进行验证 

五、认识Nginx服务的主配置文件 nginx.conf 

1、路径

2、全局配置 

3、 I/O事件配置

 4、http配置

5、日志格式设置 

六、访问统计配置

1、判断Nginx -V是否包含http_stub_status模块

 2、修改主配置文件,指定访问位置并添加stub_status配置

七、 基于授权的访问控制

1、生成用户密码认证文件

 2、修改主配置文件相对应的目录,添加认证配置

八、基于客户端的访问控制

九、基于域名的访问控制 

1、添加临时网卡 

2、修改配置文件 

3、指定域名对应IP地址 

4、创建不同IP地址的访问目录,并进行验证

十、基于端口的访问控制 

1、修改端口 

2、网页验证 


一、nginx概述

1、什么是nginx

nginx是一个高性能的HTTP和反向代理服务器,同时也是一款轻量级web服务软件。

特点

  • 稳定性高
  • 系统资源消耗低
  • 对http并发连接的处理能力强(单台物理服务器可支持30 000~50 000个并发请求)

2、并发连接

nginx并发连接能力受以下两个因素的影响:

1、CPU的个数
2、本地物理服务器系统的最大文件打开数

3、nginx应用场景

  • 静态服务器(图片,视频服务)
  • 动态服务
  • 反向代理,负载均衡
  • 缓存服务

4、nginx中http七层代理和四层代理

nginx的http七层代理,其实它工作在OSI七层模型的应用层。由于其可以解析http协议,我们可以根据URI进行请求的分发,具有很大的灵活性,但是协议的解析存在性能的消耗。为了能获取更高的代理性能,nginx支持了四层代理,即传输层,就是我们常说的TCP/UDP层,没有协议解析,就是简单的TCP/UDP转发,代理性能突飞猛进,该功能依赖于ngx_http_upstream_module和ngx_stream_upstream_module,互联网公司将其作为入口代理来工作。

5、反向代理

反向代理是指用户不需要知道目标服务器的地址,也不需要在用户端做任何设定,可以直接通过访问反向代理

服务器来获得目标服务器的资源。反向代理提高了内部服务器的安全,加快了对内部服务器的访问速度。

定义

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。

同时,用户不需要知道目标服务器的地址,也无须在用户端做任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

优点

  • 提高了内部服务器的安全
  • 加快了对内部服务器的访问速度
  • 节约了有限的IP资源

二、nginx服务和apache区别

Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;

Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;

Nginx避免子进程的概念,Apache是基于子进程的;

Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;

Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;

Nginx支持热部署,Apache不支持热部署;

Nginx对于静态文件处理具有更高效率,Apache相对一般;

Nginx在反向代理场景具有明显优势,Apache相对一般。

三、编译安装nginx服务

1、上传数据包(老版本)

2、关闭防火墙 

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3、安装依赖包 

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

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

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

4、创建运行用户、组 

useradd -M -s /sbin/nologin nginx

5、解压,配置软件模块

cd /opt
tar zxvf nginx-1.20.2.tar.gz
 
cd nginx-1.20.2/
./configure \    
--prefix=/usr/local/nginx \               #指定nginx的安装路径
--user=nginx \                            #指定用户名
--group=nginx \                           #指定组名
--with-http_stub_status_module            #启用 http_stub_status_module 模块以支持状态统计

6、编译安装nginx 

make -j2 && make install

 

7、优化配置文件路径,便于系统识别Nginx的操作命令

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/    #让系统识别nginx的操作命令

 8、添加Nginx系统服务

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

9、赋权,重启服务并设置开机自启 

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

10、验证服务

四、nginx平滑升级1.12到1.20 

1、上传软件包

2、关闭nginx进程

3、配置软件模块

[root@king opt]# tar zxf nginx-1.20.2.tar.gz 
[root@king opt]# cd nginx-1.20.2/
[root@king nginx-1.20.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module

 

4、编译,不安装

yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
./configure
make

 

5、备份旧版本,用新版本覆盖过去

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
cp objs/nginx /usr/local/nginx/sbin/nginx

6、启动服务并检测版本

7、对结果进行验证 

五、认识Nginx服务的主配置文件 nginx.conf 

1、路径

 /usr/local/nginx/conf/nginx.conf

2、全局配置 

#user nobody;                 #运行用户,若编译时未指定则默认为 nobody
worker_processes 1;           #工作进程数量,可配置成服务器内核数 * 2
#error_log logs/error.log;    #错误日志文件的位置
#pid logs/nginx.pid;          #PID 文件的位置

3、 I/O事件配置

 events {
use epoll; #使用 epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
worker_connections 4096; #每个进程处理 4096 个连接
}
#如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。

 4、http配置

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;
    ##此选项允许或禁止使用socke的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;
 
    ##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    ##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;
 
##Web 服务的监听配置
server {
    ##监听地址及端口
    listen 80; 
    ##站点域名,可以有多个,用空格隔开
    server_name www.lic.com;
 
    ##网页的默认字符集
    charset utf-8;
 
    ##根目录配置
    location / {
    
        ##网站根目录的位置/usr/local/nginx/html
        root html;
    
        ##默认首页文件名
        index index.html index.htm;
    }
    ##内部错误的反馈页面
    error_page 500 502 503 504 /50x.html;
    ##错误页面配置
    location = /50x.html {
        root html;
    }
}
}

5、日志格式设置 

$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
 
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令,root、alias、proxy_pass
 
root(根路径配置):请求www.lic.com/test,会返回文件/usr/local/nginx/html/test/index.html
 
alias(别名配置):请求www.lic.com/test,会返回文件/usr/local/nginx/html/index.html

六、访问统计配置

1、判断Nginx -V是否包含http_stub_status模块

/usr/local/nginx/sbin/nginx -V #查看已安装的Nginx是否包含HTTP_STUB_STATUS模块

cat /opt/nginx-1.20.2/auto/options | grep YES   #可查看nginx已安装的所有模块

 2、修改主配置文件,指定访问位置并添加stub_status配置

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak                #复制备份
vim /usr/local/nginx/conf/nginx.conf        #编辑主配置文件
......
http {
......
    server {
        listen 80;
        server_name www.zrk.com;
        charset utf-8;
        location / {
            root html;
            index index.html index.php;
        }
        ##添加 stub_status 配置##
        location /status {                     #访问位置为/status
            stub_status on;                 #打开状态统计功能
            access_log off;                 #关闭此位置的日志记录
        }
    }
}

 

七、 基于授权的访问控制

1、生成用户密码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db lisi
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

 2、修改主配置文件相对应的目录,添加认证配置

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加认证配置##
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }
    }

 

八、基于客户端的访问控制

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加控制规则——从上向下读取##
            deny 192.168.223.10;                     #拒绝访问的客户端 IP
            allow all;                                #允许其它IP客户端访问
        }
    }
 
systemctl restart nginx

九、基于域名的访问控制 

1、添加临时网卡 

ifconfig ens33:0 192.168.169.40 netmask 255.255.255.0 

 

2、修改配置文件 

server {
        listen      192.168.109.12:80;
        server_name  www.zrk.com;

        charset utf-8;

        access_log  logs/www.zrk.access.log;

        location / {
            root   /usr/local/nginx/html/zrk;
            index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

    server {
        listen      192.168.109.50:80;
        server_name  www.krz.com;

        charset utf-8;

        access_log  logs/www.krz.access.log;

        location / {
            root   /usr/local/nginx/html/lic;
            index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
 

 

 

3、指定域名对应IP地址 

4、创建不同IP地址的访问目录,并进行验证

mkdir -p /usr/local/nginx/html/zrk
mkdir -p /usr/local/nginx/html/krz
echo "<h1>www.zrk.com</h1>" > /usr/local/nginx/html/zrk/index.html
echo "<h1>www.krz.com</h1>" > /usr/local/nginx/html/krz/index.html
systemctl restart nginx

十、基于端口的访问控制 

1、修改端口 

2、网页验证 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值