当前位置: 首页 > article >正文

Web集群服务-Nginx

1. web服务

1. WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站

2. WEB中间件: 等同于WEB服务

3. 中间件:范围更加广泛,指的负载均衡之后的服务

4. 数据库中间件:数据库缓存,消息对列

2. 极速上手指南

nginx官网: nginx documentation

2.1 配置yum源

vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2.2 yum安装nginx

yum install -y nginx

2.3 检查安装

nginx -V

 2.4 目录结构

目录结构说明
/etc/nginx/nginx各种配置文件的目录
/etc/nginx/nginx.conf主配置文件
/etc/nginx/conf.d/子配置文件(网站)
/etc/nginx/conf.d/default.conf默认的子配置文件
/usr/sbin/nginxnginx的命令
/usr/share/nginx/html/nginx默认的站点目录,网站的根目录
/var/log/nginx/nginx日志:访问日志,错误日志,跳转日志

2.5 日常启动与管理

##创建自启动文件
systemctl  enable nginx
##启动服务
systemctl  start nginx
##查看端口
ss - lntup
##查看进程
ps -ef |grep nginx

 2.6 浏览器访问:http://10.0.0.8

2.7 命令行访问

curl  10.0.0.8
curl  -v 10.0.0.8

3. Nginx核心功能详解 

3.1 主配置文件详解(/etc/nginx/nginx.conf)

3.2 子配置文件(/etc/nginx/conf.d/default.conf)

如果删除首页文件,进行(不指定文件)访问会发生什么?

403文件首页不存在

 4 部署第1个网站

网站要求说明
域名cxk.oldboylinux.com
站点目录/app/code/cxk
代码来源cxk.zip

 4.1 配置文件

##子配置文件
vim /etc/nginx/conf.d/cxk.conf
server {
    listen       80;
    server_name  cxk.oldboylinux.cn;
    location / {
        root   /app/code/cxk;
        index  index.html;
    }
}
##检查语法
nginx -t
##热加载
systemctl  reload nginx

4.2 其他配置

##创建站点目录
mkdir -p /app/code/cxk
##解压代码
unzip cxk.zip
mv cxk /app/code/

##配置linux和windows hosts解析
#win: C:\Windows\System32\drivers\etc\hosts
#windows下面win键+r 输入drivers 访问etc下的hosts
#linux: /etc/hosts
10.0.0.8 cxk.oldboylinux.cn

4.3 访问

5. Nginx处理用户请求流程

5.1 使用域名访问网站流程:

1. DNS解析:域名 ------->>IP地址

2. 连接80端口: tcp3次握手与网站的80端口建立连接

3. http请求:请求方法,URI,HOST等信息

4. nginx处理:

       4.1  http请求,http区域处理

       4.2 不同的server{} 区域(子配置文件)处理

               4.2.1 端口

               4.2.2 域名:用户请求的域名与子配置文件server_name进行匹配

               4.2.3 匹配成功,就让对应的子配置文件(server{})处理

               4.2.4 根据子配置文件的,root,location规则,index进行处理查找文件

               4.2.5 把找到的文件发回给用户

 5. http响应

 6. 客户收到文件内容,浏览器解析,进行展示

5.2 虚拟主机

5.2.1 概述与分类

虚拟主机的分类说明应用场景
基于域名的虚拟主机不同域名访问不同的站点生产环境最常用的
基于端口的虚拟主机不同端口访问不同的站点保护,设置特殊端口.1024以上 8888 18888
基于ip的虚拟主机不同ip访问不同的站点保护,用户只能通过某个ip连接进来

5.2.2 基于域名的虚拟主机

##创建子配置文件
vim /etc/nginx/conf.d/bird.conf
server {
  listen 80;
  server_name bird.oldboulinux.cn; ##站点目录
  location /{
    root /app/code/bird;
    index index.html;
   }

}
测试不创建站点目录:
curl -H Host:bird.oldboylinux.cn  http://10.0.0.8

测试创建站点目录,但是没有首页文件
##创建站点目录
mkdir -p /app/code/bird/
##测试
curl -H Host:bird.oldboylinux.cn  http://10.0.0.8

测试创建首页文件后访问
##创建首页文件
echo 'xzb666' >/app/code/bird/index.html
##测试
curl -H Host:bird.oldboylinux.cn  http://10.0.0.8

5.2.3 基于端口的虚拟主机

不同的端口访问不的网站
##修改live.oldboylinux.cn端口为81
server {
 listen 81;
 server_name live.oldboylinux.cn;
 location / {
  root /app/code/live;
  index index.html;
  }
}
##访问
curl -H Host:live.oldboylinux.cn http://10.0.0.8:81/index.html

5.2.4 基于ip的虚拟主机

搭建mimi网站,端口是8888,只能通过172.16.1.7内网访问
##创建配置文件
server {
 listen 172.16.1.8:8888;
 server_name mi.oldboylinux.cn;
 location / {
  root /app/code/mi;
  index index.html;
 }
}
##在首页文件写入内容
echo '只允许172.16.1.8 的8888端口访问' >/app/code/mi/index.html
##测试
curl -H Host:mi.oldboylinux.cn  http://10.0.0.8:8888
curl -H Host:mi.oldboylinux.cn  http://172.16.1.8:8888

6. Nginx日志

6.1 概述

日志使用建议定义使用
错误日志发生故障的时候可以查看,4xx,5xx通过错误级别指定error_log
访问日志记录着用户什么时候访问 网站哪些页面,客户端信息通过log_format定义访问日志的格式error_log

 6.2 错误日志

1. 指定错误日志的位置和错误级别

2. 错误日志级别:debug, info, notice, warn, error, crit, alert, or emerg左到右,越来越粗糙

3. debug: 未来用于调试使用,短时间开启,网站访问量较大别开

给每个虚拟主机指定自己独立的错误日志
##需要先把nginx.conf里面的error_log注释
##给cxk.conf增加自己的错误日志
server {
  listen 80;
  server_name  cxk.oldboylinux.cn;
  error_log  /var/log/nginx/cxk.oldboylinux.cn/error.log notice;
  root /app/code/cxk;
  location / {
    index index.html;
  }
 }
nginx -t
systemctl  reload nginx
##创建错误日志目录和文件
mkdir -p  /var/log/nginx/cxk.oldboylinux/
touch /var/log/nginx/cxk.oldboylinux/error.log

 6.3 访问日志

1. 辅助我们进行分析,网站访问量

2. log_format指定访问日志的格式

3.log_format 格式名字 格式.....

Ngx访问日志格式(ngx内置变量)说明
$remote_addr客户端ip地址
$request请求报文的起始行
$statushttp状态码
$body_bytes_sent响应给客户的文件的大小,响应报文的主体大小(文件大小) 单位字节
$http_user_agent客户端代理(浏览器)
$http_x_forwarded_forXFF头,负载中使用,记录用户真实的ip地址
$time_local时间
$remote_user用户名

给每个虚拟主机指定自己独立的访问日志
##需要把nginx.conf里面的access_log注释
##给cxk.conf创建访问日志
server {
    listen       80;
    server_name  cxk.oldboylinux.cn;
    error_log    /var/log/nginx/cxk.oldboylinux/error_log notice;
    access_log   /var/log/nginx/cxk.oldboylinux/access-log main;
    location / {
        root   /app/code/cxk;
        index  index.html;
    }
}
nginx -t
systemctl  reload nginx

7. Location规则

7.1 概述

1. 在ngx用于匹配用户请求中的uri.ngx对用户请求中的uri进行判断

2. 如果用户请求的uri是xxxx,则做xxxx

3. URI vs URL:

URL:  https://nginx.org/en/docs/

URI:    /en/docs/  域名后面的内容

7.2 搭建大型直播购物网站

域名:buy.oldboylinux.cn

站点目录:/app/code/buy/

首页文件index.html  

后台管理页面:/app/code/buy/admin/index.html

要求后台只能内网访问:172.16.1.0/24网段

##创建buy.conf配置文件,编写配置文件
server {
 listen 80;
 server_name buy.oldboylinux.cn;
 location / {
  index index.html;
  root /app/code/buy;
 }
 ##管理后台
 ##uri: /admin/
 location /admin/{
  allow 172.16.1.0/24;
  deny all;
}
}
##准备站点目录
mkdir -p /app/code/buy/  ##首页端
echo '这是首页' >/app/code/buy/index.html
mkdir -p /app/code/buy/admin/ ##管理端
echo '这是管理端' >/app/code/buy/admin/index.html
##测试
curl -H Host:buy.oldboylinux.cn  http://10.0.0.8/admin/
curl -H Host:buy.oldboylinux.cn  http://172.16.1.8/admin/

7.3 浏览器缓存

给cxk网站加速,设置缓存,网站中html,js,css结尾的文件缓存1天,图片缓存1小时
##给cxk.conf设置缓存
server {
    listen       80;
    server_name  cxk.oldboylinux.cn;
    error_log    /var/log/nginx/cxk.oldboylinux/error_log notice;
    access_log   /var/log/nginx/cxk.oldboylinux/access-log main;
    root   /app/code/cxk;
    location / {
        index  index.html;
    }
  ## uri包含.html或者.js或者.css缓存一天
    location ~* \.(html|js|css)$ {
      expires 1d;
   }
    location ~* \.(jpg|jpeg|png|gif|bmp)$ {
      expires 1h;
   }
}

7.4 location 规则小结

location规则说明
location / {xxxx}默认规则,保底,location规则在进行匹配的时候,其他的规则都匹配失败了,这时候匹 配默认的规则
location /admin/ {}

用于匹配请求的uri

buy.oldboylinux.cn/admin/

location ~ \. (jpg|jpeg)$ {}支持正则,区分大小写 cxk.oldboylinux.cn/lidao/lidao.jpg
 location ~* \. (jpg|jpeg)$ {}支持正则,不区分大小写 cxk.oldboylinux.cn/lidao/lidao.jpg

8. 搭建高清视频下载站

搭建要求:

1. 浏览器打开后,显示目录结构(类似清华源结构)

2. 增加svip功能

3. 增加统计功能,统计nginx服务的状态,访问情况

8.1 autoindex模块

autoindex模块说明
autoindex on开启目录索引功能(显示站点目录下的文件的列表,首页文件不存在
autoindex_localtime on显示本地时间
autoindex_exact_size off  是否显示精确的文件的大小. off表示以人类可读形式显示大小

##编写vip.conf配置文件
server {
  listen 80;
  server_name vip.oldboylinux.cn;
  root /app/code/vip;
  error_log /var/log/nginx/vip.oldboylinux/error.log notice;
  access_log /var/log/nginx/vip.oldboylinux/access.log main;
  charset utf8; ##编码格式
  autoindex on; ##目录索引
  autoindex_localtime on;  ##显示当地时间 
  autoindex_exact_size off; ##显示文件大小
  location / {
   index index.html;
 }
}
nginx -t
systemctl reload nginx
##测试

8.2 增加svip认证功能

1. 增加一个svip目录,里面创建文件

2. 增加认证功能(用户名和密码)

3. auth_basic模块

yum install -y httpd-tools ##安装工具
#创建文件
htpasswd -bc /etc/nginx/user  xzb666 1  ##xzb666是用户名 1是密码
##修改权限
chmod 600 /etc/nginx/user
chown nginx.nginx /etc/nginx/user
##修改vip.conf配置文件
server {
  listen 80;
  server_name vip.oldboylinux.cn;
  root /app/code/vip;
  error_log /var/log/nginx/vip.oldboylinux/error.log notice;
  access_log /var/log/nginx/vip.oldboylinux/access.log main;
  charset utf8;
  autoindex on;
  autoindex_localtime on;
  autoindex_exact_size off;
  location / {
   index index.html;
 }
  location /svip/{
   auth_basic "input password"; ###输出提示,根据不同浏览器,可能不显示
   auth_basic_user_file /etc/nginx/user; ## #指定用户名,密码文件
 }
}
##测试

8.3 增加统计功能

stub_status模块/指令,显示nginx服务的状态,用户访问的状态

##修改vip.conf配置文件
server {
  listen 80;
  server_name vip.oldboylinux.cn;
  root /app/code/vip;
  error_log /var/log/nginx/vip.oldboylinux/error.log notice;
  access_log /var/log/nginx/vip.oldboylinux/access.log main;
  charset utf8;
  autoindex on;
  autoindex_localtime on;
  autoindex_exact_size off;
  location / {
   index index.html;
 }
  location /svip/{
   auth_basic "input password";
   auth_basic_user_file /etc/nginx/user;
 }
  location /status{
    stub_status; ##显示nginx服务的状态,用户访问的状态
  }
}
##测试

 9. 动态网站架构

9.1 概述

网站架构说明与特点性能
静态网站网站仅仅包含:html,css样式,js脚本,图 片,视频 ngx直接次处理的资源静态资源只需要web服务器即可:nginx,可以承受较 高的访问量. 不支持动态的功能,注册,评论,静态网站功 能单一
动态网 站动态网站一般是通过开发语言实 现:java,php,python,Golang...动态资源页面需要,服务器进行处理 nginx+php/tomcat +数据库 处理后把结果返回给用户

9.2 LNMP架构细节

9.3 部署一份开发的php代码 

9.3.1 数据库准备

1. 数据库服务器地址:10.0.0.51/172.16.1.51

2. 数据库:mariadb

##安装数据库mariadb-server 服务端  mariadb 客户端
yum install -y mariadb-server  
##启动服务
systemctl enable mariadb
systemctl start mariadb
##检查
ss -lntup |grep mysqld
ps -ef |grep mysql 

 数据库安全配置
mysql_secure_installation #仅仅刚安装的时候运行.仅首次运行即可.
Enter current password for root (enter for none):回车
Set root password? [Y/n]  Y设置密码
Remove anonymous users? [Y/n]  Y #删除数据库中的匿名用户(没有用户名的用户,容易导致安全问题)
Disallow root login remotely? [Y/n] Y #是否禁止root远程登录
Remove test database and access to it? [Y/n] Y  ##是否删除test测试用的数据库
Reload privilege tables now? [Y/n]  Y  ##是否更新权限信息表
进入数据库内部
mysql -uroot -p1  ##-u后面接用户名,-p后面接自己自己设置的密码
##查看系统所有的数据库.
show databases;
##查看库里的表
show tables from mysql;
##创建数据库
create database wordpress;
#创建用户,进行授权
grant all on  wordpress.* to 'wordpress'@'localhost' identified by '1'; ##可以通过172.16.1.%进行授权局域网访问,密码是1
grant all on  wordpress.* to 'wordpress'@'172.16.1.%' identified by '1'; ##localhost表示只能在数据库本地使用.密码是1
##grant 所有权限   on  数据库.*  to  '用户名'@'白名单'
##删除数据库(极其危险)
drop  database  wordpress;
删除用户
drop user 'wordpress'@'172.16.1.%' ;
drop user 'wordpress'@'localhost' ;
#测试本地连接
mysql -uwordpress -p1
#测试远程连接
mysql -uwordpress -p1  -h 172.16.1.51 ##-h后面接数据库服务端地址

9.3.2 php准备

环境准备
##这里安装php7.x,具体看自己要求
##1. 配置yum源
[webtatic-php]
name = php Repository
baseurl = http://repo.webtatic.com/yum/el7/x86_64/
enabled =1
gpgcheck = 0
##2.安装php依赖
yum install -y php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mcrypt php72w-mbstring  php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-pecl-memcached php72w-pecl-redis php72w-pecl-mongodb
##3. 启动
systemctl enable php-fpm
systemctl start  php-fpm
##4. 检查
ss -lntup |grep php
ps -ef |grep php

统一nginx与php用户,需要修改php配置文件
vim /etc/php-fpm.d/www.conf
8:user = nginx 
10:group = nginx

 9.3.3 Nginx准备

##编写blog配置文件
server {
  listen 80;
  server_name blog.oldboylinux.cn;
  root /app/code/blog;
  access_log /var/log/nginx/blog/access.log  main;
  error_log /var/log/nginx/blog/error.log notice;
  location / {
   index index.php;
  }
  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}
##创建站点目录
mkdir -p /app/code/blog
##创建日志目录
mkdir -p log /var/log/nginx/blog/
测试nginx+php动态 
##创建测试文件
vim /app/code/blog/index.php
<?php
phpinfo();
?>

测试php+mysql
vim /app/code/blog/index.php
<?php
##数据库地址
$db_host='172.16.1.51';
##数据库用户名
$db_user='wordpress';
 $db_pass='1';
 $link_id=mysqli_connect($db_host,$db_user,$db_pass);
 if($link_id){
  echo "mysql successful by oldboy xzb996!\n" ;
 }else{
  echo "connection failed!\n" ;
 }
?>

9.3.4 部署代码与设置权限 

##解压
unzip wordpress-6.5.3-zh_CN.zip
mv wordpress/* /app/code/blog/
##修改权限
chown -R nginx.nginx /app/code/blog/
##浏览器解析访问

 


http://www.kler.cn/a/350562.html

相关文章:

  • 51c嵌入式~单片机~合集6
  • 【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)
  • Ubuntu 24.04 LTS linux 文件权限
  • 三电平空间矢量详解
  • Linux-性能分析top
  • 【大数据】机器学习------支持向量机(SVM)
  • log4j添加druid的慢sql日志记录到指定文件
  • 【IRV2】Deepfake video detection using InceptionResnetV2
  • 安卓的漏洞类型和扫描工具
  • vue3中swiper11的使用
  • Unity-Shader简介
  • 滑动窗口经典例题
  • 【CSS in Depth 2 精译_046】7.1 CSS 响应式设计中的移动端优先设计原则(下)
  • 奖金——Topsort
  • 基于STM32的自学习走迷宫智能小车设计
  • 空间限域效应
  • Java基础14-网络编程
  • 基于springboot学生成绩管理系统
  • linux系统,不定时kernel bug :soft lockup的问题
  • android studio导入外部项目
  • 24/10/12 算法笔记 汇聚层
  • mysqlRouter读写分离
  • 常用分布的数学期望、方差、特征函数
  • linux下编译鸿蒙版boost库
  • 【2021】知识图谱导论(陈华钧)——阅读思考与笔记
  • 常见网络协议的介绍、使用场景及 Java 代码样例