Nginx网站服务

目录

一.、Nginx 概述

1.1 什么是Nginx?

1.2 Nginx的httpd七层代理和四层代理

1.3 Nginx和Apache的区别

二、编译安装Nginx服务(配置监控模块)

2.1 Nginx 监控模块简介

2.2 编译安装:关闭防火墙,将安装 ngnix 所需的软件包上传到 /opt 目录下

2.3 安装依赖包

2.4 编译安装Ngin

2.5 添加 Nginx 系统服务,使用systemctl工具控制

2.6  修改默认日志文件格式,添加压缩配置,添加监控配置,具体可根据自己的需求修改

2.7 启动服务

2.8 访问测试(首页)

2.9 访问状态监控模块

三 、Nginx主配置文件

3.1 全局配置​编辑

3.2 l/O事件配置

 3.3 http模块

3.4  日志格式设定

四、nginx服务配置案例

4.1 基于域名的 Nginx 虚拟主机

4.1.1 分别为不同的域名准备不同主页

4.1.2 进入配置文件设置指向

4.1.3 编辑主页文件,用来区分

 4.1.4 设置DNS解析

4.1.5 测试

4.2 基于端口的虚拟主机

4.2.1 修改两个server 监听的端口

​4.2.2 修改页面文件,保证区别

4.2.3 进行测试


一.、Nginx 概述

1.1 什么是Nginx?

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

  • 稳定性高

  • 系统资源消耗低 (协程 回调)

  • 对HTTP并发连接的处理能力高 (epoll I/O多路复用)

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

1.2 Nginx的httpd七层代理和四层代理

nginx的http七层代理,nginx工作在osl七层模型的应用层。由于其可以解析http协议,我看可以根据url进行请求的分发,具有很大的灵活性,但是协议的解析存在性能的消耗,为了能获取更高的代理性能。

nginx支持了四层代理,即传输层,tcp/udp层,没有协议解析,就是简单的tcp/udp转发,代理性能突飞猛进。

1.3 Nginx和Apache的区别

  • Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器。
     
  • Nginx所有请求都是由一个线程处理,Apache单个线程处理单个请求。
     
  • Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方便一般。
     
  • Nginx的性能和伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件。
     
  • Nginx支持热部署,Apache不支持热部署。
     
  • Nginx对于静态文件处理具有高效率,Apache相对一般。
     
  • Nginx在反向代理场景具有明显优势,Apache相对一般
     

二、编译安装Nginx服务(配置监控模块)

2.1 Nginx 监控模块简介

监控Nginx主要用到以下三个模块:

1、nginx-module-vts:Nginx virtual host traffic status module,Nginx的监控模块,能够提供JSON格式的数据产出。
2、nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
3、Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。

2.2 编译安装:关闭防火墙,将安装 ngnix 所需的软件包上传到 /opt 目录下

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

Nginx网站服务_第1张图片

2.3 安装依赖包

yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel make
#添加的openssl是一种加密的手段

2.4 编译安装Ngin

tar zxvf nginx-1.15.9.tar.gz -C /opt/
#不同nginx软件包之间的区别:1.15.9只能做对七层的控制 1.21和1.18 可以做到对七层和四层的控制
unzip nginx-module-vts-master.zip
#将上传的模块也进行解压

mv nginx-module-vts-master /usr/local/

cd /opt/nginx-1.15.9
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--add-module=/usr/local/nginx-module-vts-master #添加编译安装监控模块


make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #优化路径

useradd -M -s /sbin/nologin nginx #创建用户管理服务

Nginx网站服务_第2张图片

Nginx网站服务_第3张图片

2.5 添加 Nginx 系统服务,使用systemctl工具控制

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
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
###配置参数##

chmod 754 /lib/systemd/system/nginx.service

 Nginx网站服务_第4张图片

2.6  修改默认日志文件格式,添加压缩配置,添加监控配置,具体可根据自己的需求修改

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


http {
    include       mime.types;
    default_type  application/octet-stream;
    vhost_traffic_status_zone;			#流量状态监控
	#vhost_traffic_status_filter_by_host on;  
PS:开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。	
假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息


###以下内容需要添加进去###

log_format main '{ "@timestamp": "$time_local", '
'"@fields": { '
'"uri":"$request_uri",'
'"url":"$uri",'
'"upstream_addr":"$upstream_addr",'
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"host":"$host",'
'"server_addr":"$server_addr",'
'"request_time": "$request_time", '
'"request_time":"$request_time",'
'"status":"$status",'
'"request": "$request", '
'"request_method": "$request_method", '
'"size":$body_bytes_sent,'
'"upstream_time":"$upstream_response_time"'
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" } }';
    #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;
..............
}
server {
 ..............
         location / {
            root   html;
            index  index.html index.htm;
        }
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }

}

Nginx网站服务_第5张图片

Nginx网站服务_第6张图片

 Nginx网站服务_第7张图片

2.7 启动服务

systemctl enable nginx.service --now

Nginx网站服务_第8张图片

2.8 访问测试(首页)

http://ip

Nginx网站服务_第9张图片

2.9 访问状态监控模块

http://ip/status 

Nginx网站服务_第10张图片

三 、Nginx主配置文件

/usr/local/nginx/conf/nginx.conf 主配置文件位置

3.1 全局配置Nginx网站服务_第11张图片

3.2 l/O事件配置

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

}

Nginx网站服务_第12张图片

 Nginx网站服务_第13张图片

3.4  日志格式设定


$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(根路径配置):root /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html
 
alias(别名配置):alias /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html
 
proxy_pass(反向代理配置

四、nginx服务配置案例

Nginx支持的虚拟主机

  • 基于域名的虚拟主机

  • 基于IP的虚拟主机

  • 基于端口的虚拟主机

通过"server{}"配置段实

4.1 基于域名的 Nginx 虚拟主机

① 添加域名解析
echo "192.168.114.200 www.accp.com www.benet.com" >> /etc/hosts

② 准备虚拟站点网页文档
mkdir /usr/local/nginx/html/server1
mkdir /usr/local/nginx/html/server2
cp  /usr/local/nginx/html/index.html cp -p /usr/local/nginx/html/server1
cp  /usr/local/nginx/html/index.html cp -p /usr/local/nginx/html/server2
vim /usr/local/nginx/html/server1/index.html
vim /usr/local/nginx/html/server1/index.html

##修改配置文件

http {
……
    server {
        listen       80;
        server_name  www.sever1.com;
        charset utf-8;	#修改下中文字符集
        access_log  logs/accp.access.log; #保存日志打开,专属于此server的日志。
        location / {
            root   /usr/local/nginx/html/server1;	#修改默认识别的位置
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       80;
        server_name  www.sever2.com;
        charset utf-8;
        access_log  logs/benet.access.log;
        location / {
            root   /usr/local/nginx/html/server2;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

4.1.1 分别为不同的域名准备不同主页

Nginx网站服务_第14张图片

Nginx网站服务_第15张图片

4.1.2 进入配置文件设置指向

Nginx网站服务_第16张图片

Nginx网站服务_第17张图片

4.1.3 编辑主页文件,用来区分

Nginx网站服务_第18张图片

Nginx网站服务_第19张图片

 Nginx网站服务_第20张图片

 4.1.4 设置DNS解析

 vim hosts

Nginx网站服务_第21张图片

4.1.5 测试

systemctl restart nginx.service 重启服务

Nginx网站服务_第22张图片

 Nginx网站服务_第23张图片

4.2 基于端口的虚拟主机

可以在实验4.1的基础上,修改部分配置,达到实验2

4.2.1 修改两个server 监听的端口

Nginx网站服务_第24张图片

Nginx网站服务_第25张图片 4.2.2 修改页面文件,保证区别

 

Nginx网站服务_第26张图片 Nginx网站服务_第27张图片

 4.2.3 进行测试

Nginx网站服务_第28张图片

 Nginx网站服务_第29张图片

你可能感兴趣的:(nginx,服务器,运维)