Nginx网站服务

目录

一、Nginx概述

1.1 Nginx概述

1.2 Nginx和Apache的差异

1.3 nginx和apache区别

1.4 Nginx的进程

二、编译安装nginx服务

1:关闭防火墙,将nginx所需压缩包上传到/opt目录下

2 :安装依赖包

 3: 创建运行用户和组,便于管理

 4 解压软件包,编译安装nginx

 5 将nginx的操作指令放入环境变量PATH的目录下

 6 检查、启动、重启、停止nginx服务

检查配置文件是否配置正确,并启动nginx服务

7 多种方式查看nginx的PID号

 8 停止nginx服务

 9 重载nginx服务

 10 日志分割(移走原有日志,重新打开日志文件)

 11 升级nginx服务

12 添加nginx系统服务

 13 浏览器访问验证

 三、Nginx服务的主配置文件

1 、全局块(全局配置)

2 、events块( I/O 事件配置)

3、查看Nginx支持的最大并发量(软件支持、系统支持、CPU性能):

1、软件支持

 2、系统支持

 3、查看nginx支持的文件类型:

3.2 location块

四、访问状态统计配置

4.1 查看nginx的安装模块,是否包含 HTTP_STUB_STATUS 模块

4.11查看版本和编译安装时的配置参数:

4.12查看 /opt/nginx-1.12.2/auto/options 文件:

4.13 查看 HTTP_STUB_STATUS 模块是否已安装:

4.2 修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

 4.3 重启服务,访问测试

 五、基于授权的访问控制(只有指定用户能访问)

5.1 生成用户密码认证文件

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

5.3 重启服务,访问测试

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


一、Nginx概述

1.1 Nginx概述

Nginx 是开源、高性能、轻量级、稳定性高的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。

1.2 Nginx和Apache的差异

轻量级,nginx比apache占用更少的内存及资源
静态处理,Nginx静态处理性能比Apache高
Nginx可以实现五缓存的反向代理加速,提高网站运行速度
Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件
Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级
nginx是异步进程,多个连接可以对应一个进程;apache是同步多进程,一个连接对应一个进程
Nginx高度模块化,编写模块相应简单,且组件比Apache少
高并发下nginx能保持低资源低消耗高性能
Nginx配置简介,Apache配置复杂

1.3 nginx和apache区别

nginx更轻量 比apache占用更少的内存资源
nginx抗并发能力更强
nginx是模块化设计,配置相对简单,组件也比较apache少
nginx处理请求是异步非阻塞,apache是同步阻塞性的
nginx可以多个连接对应一个进程,apache是一个连接对应一个进程

1.4 Nginx的进程

Apache和Nginx的默认端口都是80,如果其中一个已经启动了,那么再启动另一个会报错。如果想要同时使用,可以修改其中一个的端口号。

Nginx有两个进程:

master process:主进程(守护进程),用来管理工作进程。

worker process:工作进程,用来处理用户的请求。

二、编译安装nginx服务

1:关闭防火墙,将nginx所需压缩包上传到/opt目录下

systemctl stop firewalld

setenforce 0

ls /opt/

nginx-1.12.2.tar.gz rh

2 :安装依赖包

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

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

​  #各程序作用解释如下:  

 gcc                     #C语言的编译器   

gcc-c++                 #C++的编译器   

make                    #源代码编译器(源代码转换成二进制文件)   

pcre-devel              #perl的接口开发包,提供正则表达式  

zlib-devel              #提供压缩功能

 

 3: 创建运行用户和组,便于管理

useradd -M -s /sbin/nologin nginx

 4 解压软件包,编译安装nginx

 

 

 5 将nginx的操作指令放入环境变量PATH的目录下

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

 6 检查、启动、重启、停止nginx服务

检查配置文件是否配置正确,并启动nginx服务

nginx -t  

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok  

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

7 多种方式查看nginx的PID号

 8 停止nginx服务

注意:nginx有主进程和工作进程,一定要杀死主进程(即父进程)

 9 重载nginx服务

 10 日志分割(移走原有日志,重新打开日志文件)

 11 升级nginx服务

#平滑升级:  kill -USR2 <PID号>

 #新版本升级:

 tar zxvf nginx-XX.XX.tar.gz       #XX代表新版本号  

cd nginx-XX.XX  

./configure \

 --prefix=/usr/local/nginx \

 --user=nginx \  --group=nginx \

 --with-http_stub_status_module \

 --w#ith-http_ssl_module

#重新编译:

make                                            #重新编译

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old  #备份旧文件,方便回滚

cp objs/nginx /usr/local/nginx/sbin/nginx             #将新的运行文件放入安装的运行目录

make upgrade                                 #编译升级

#或者先 killall -3 nginx ,再 /usr/local/nginx/sbin/nginx

12 添加nginx系统服务

方法一:

方法二:

将nginx命令加入服务,编写/lib/systemd/system/nginx.service文件。

 

 /lib/systemd/system/nginx.service文件注释:

 13 浏览器访问验证

使用浏览器输入本机IP地址,访问验证。

默认首页文件位置在 /usr/local/nginx/html/ 目录下。

cd /usr/local/nginx/html   //首页文件默认存放在该目录下

ls                       //index.html是默认首页文件  

50x.html     index.html

 

 三、Nginx服务的主配置文件

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

/usr/local/nginx/conf/ 目录下:

nginx.conf 是主配置文件

nginx.conf.default 是主配置文件的备份文件

主配置文件中有六个主要模块:

1、全局块:全局配置,对全局生效。

2、events块:配置影响Nginx服务器与用户的网络连接。

3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。

4、server块:配置虚拟主机的相关参数,一个http块中可以有多个server 块。每个 server 块就相当于一个虚拟主机。。

5、location块:用于配置匹配的url,一个server块中可以有多个location块。

6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

1 、全局块(全局配置)

就是配置文件从头开始到 events 块之间的内容,主要设置的是影响nginx服务器整体运行的配置指令。比如 worker_process,值越大,可以支持的并发处理量也越多,但是还是和服务器的硬件相关。

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

#user nobody;                 //运行用户,若编译时未指定则默认为nobody,若编译指定了用户则会写到二进制程序里变成默认配置。此前编译时指定了"--user=nginx",所以现在二进制程序中的运行用户为nginx  

worker_processes  1;           //工作进程数量,一般设置为和CPU核数一样

 #error_log logs/error.log;     //错误日志文件的位置  

#pid logs/nginx.pid;           //PID文件的位置

2 、events块( I/O 事件配置)

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等。

3、查看Nginx支持的最大并发量(软件支持、系统支持、CPU性能):

1、软件支持

软件配置支持多少并发量,由主配置文件nginx.conf决定:理论上支持的并发量=工作进程数量×每个工作进程处理的连接数。

 2、系统支持

使用"ulimit -a"可查看系统允许当前用户进程打开的文件数限制。

 

修改系统支持的最大并发量:

  • “ulimit -n 65535”命令可临时修改本地每个用户进程可以同时打开的最大文件数。
  • vim /etc/security/limits.conf,编辑该文件可永久修改。

 

 

 3、查看nginx支持的文件类型:

 

 

3.1: 全局 server 块

最常见的配置是本虚拟机主机的监听配置,和本虚拟主机的名称或 IP 配置。

 #监听地址及端口  

listen 80;

 #站点域名,可以有多个,用空格隔开  

server_name www.yuji.com;

3.2 location块

  • 一个 server 块可以配置多个 location 块。
  • 主要作用是根据请求地址路径的匹配,匹配成功进行特定的处理。
  • 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

location常见配置指令:root、alias、proxy_pass

  • root(根路径配置):root /var/www/html 请求www.yuji.com/test/1.html,会返回文件/var/www/html/test/1.html
  • alias(别名配置,即虚拟路径):alias /var/www/html 请求www.yuji.com/test/1.html,会返回文件/var/www/html/1.html
  • proxy_pass(反向代理配置)

四、访问状态统计配置

4.1 查看nginx的安装模块,是否包含 HTTP_STUB_STATUS 模块

先使用命令 /usr/local/nginx/sbin/nginx -V 查看已安装的nginx是否包含 HTTP_STUB_STATUS 模块。

 nginx -v    #查看nginx的版本。此前已将nginx的可执行文件放入PATH的目录中,所以可以直接使用nginx命令  ​

 nginx -V    #查看nginx的版本,以及编译安装时的配置参数  ​  

cat /opt/nginx-1.12.2/auto/options   #查看nginx已安装和未安装的模块,with表示已安装,without表示未安装  ​  

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

4.11查看版本和编译安装时的配置参数:

4.12查看 /opt/nginx-1.12.2/auto/options 文件:

4.13 查看 HTTP_STUB_STATUS 模块是否已安装:

cat /opt/nginx-1.12.2/auto/options | grep "HTTP_STUB_STATUS"

 HTTP_STUB_STATUS=NO       #此处NO表示该模块不是默认安装的

         --with-http_stub_status_module)  HTTP_STUB_STATUS=YES       ;;  #表示该模块已安装

4.2 修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

 

 

 4.3 重启服务,访问测试

 

 通过命令进行访问:

 监控nginx当前并发数量:

可使用 curl -Ls http://192.168.72.10/status 结合awk与if语句进行性能监控。

 

 五、基于授权的访问控制(只有指定用户能访问)

设置只有指定用户才可以访问该网页,想要对哪个路径进行限制,就在location下添加路径和认证配置。

我这里直接使用根目录做实验。

5.1 生成用户密码认证文件

用户密码认证文件的文件名自拟。

但文件属主必须修改为nginx,文件权限必须设置为400。

 

 

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

想要对哪个路径进行限制,就在对应的location块下添加认证配置项。

我这里直接使用根目录做实验

 

5.3 重启服务,访问测试

 

 

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

设置只有指定IP/IP段才可以访问该网页,或指定IP/IP段不能访问。想要对哪个路径进行限制,就在location块下添加路径和控制规则,我这里直接使用根目录做实验。

访问控制规则如下:

  • deny IP/IP段:拒绝某个IP或IP段的客户端访问。(黑名单)
  • allow IP/IP段:允许某个IP或IP段的客户端访问。(白名单)
  • 规则从上往下执行,匹配到则停止,不再往下匹配。

示例1:

注意要先关闭web服务器的防火墙,以免防火墙的原因导致无法访问。

 

 

示例2:

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

所以如果同一个IP既被拒绝访问,又被允许访问,要看哪一条规则在上方,匹配到上方的规则后就停止,不再往下匹配。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值